Solution Set -「AGC 004~006」C~F
「AGC 004C」AND Grid
Tag:「水题无 tag」
连通? 典!
第一张图初始一个 形, 所有奇数行涂黑; 第二张图初始一个 形, 所有偶数行涂黑. 对于原图的黑格, 在两张图上都涂黑就好啦.
「AGC 004D」Teleporter
Tag:「水题无 tag」
给出的传送门构成的是内向基环树, 在环上. 最终答案一定也是一棵内向基环树. 不过, 如果一个点走 步到 , 它走一步, 再走 步还是到 , 即环一定是 的自环, 并且树高不超过 . 啊, 这个树上贪心一下就好了, .
「AGC 004E」Salvage Robots
Tag:「A.DP-杂项」
我做 ... 我 WA 过, 哭哭. 又 WA 了两发, 哭哭.
初步转化是让出口移动, 设出口在四个方向移动的最远距离为 , 出口坐标为 , 我们就能刻画当前哪些机器人挂了, 哪些机器人救了. 直接大力 DP 即可, 复杂度 .
「AGC 004F」Namori ^
Tags:「B.贪心」「C.性质/结论」「C.思维」
第三次见面, 又不会了?! 还有上面这种 tag 组合实在是太恐怖了.
树是平凡的, 我们来看看基环树.
对于偶环基环树, 可以发现树上二染色的不会失效. 先去掉一条环边变成树, 此时结论是: 设 表示 子树内白点数量减黑点数量, 那么树的答案为 , 有解当且仅当 . 此后, 再加入这条边, 研究这条边带来的传递次数 , 答案形如 , 直接取最优的 即可.
对于奇环基环树, 非树边连接了同色点, 相当于能让这对同色点同时反色. 那么 为偶数 ( 为偶数) 就有解, 反色次数可以直接算出来.
总共就一个 , 偶环那里可以 std::nth_element
.
「AGC 005C」Tree Restoring
Tag:「水题无 tag」
找到直径长度 , 保证直径能够连出来, 用剩的点的最远距离应当大于 . 判一判就好.
「AGC 005D」~K Perm Counting ^
Tag:「A.数学-二项式反演」
有一个很形象的转化:
描述了网格图中的一个坐标, (图中 ) 我们的计数目标即在白格子里放 个互不能攻击的车的方案数.
容斥成 "至少放 个阴影", 阴影间的攻击关系是若干条互不干扰的链, 链内的独立集可以直接组合数出来, 外层背包 DP 求出容斥的目标, 然后容斥一下得到答案. 复杂度 . 可以多项式做到 .
「AGC 005E」Sugigma: The Showdown *
Tags:「B.贪心」「C.性质/结论」「C.思维」
没有发觉一个显然的结论, 导致根本没法想 qwq.
设先手在红树, 后手在蓝树. 如果先手已经到达了一条红边 , 使得 , 那么先手在这条边上左右横跳就可以让后手自闭了.
因此, 如果有解, 先手不可能走到这样的红边. 也就是说, 认为对于任何红边 , 都有 . 再注意到, 这样的红边不可能让先手安全地 "跨过" 后手所在位置. 就算 , 也顶多从后手所在点的左侧跳到右侧, 然后被后手抓住. 这样并没有站在原地优秀.
更具体化地说, 在蓝树上, 以后手起点为根, 当后手操作最优, 先手只能在后手所在子树内活动. 那么后手的操作就明了了: 一路朝着先手撵过去. 设先后手起点分别为 , 那么先手能走到点 当且仅当 . 结合已有结论, 如果能走到 的红边, 无解; 否则答案就是能走到的最大的 的两倍. 复杂度 .
「AGC 005F」Many Easy Problems
Tags:「A.数学-多项式」「B.Tricks」
很烦呐, 因为不相信 AGC 会拿多项式压轴, 一个小时多才过.
题目所求 "最小连通块" 实际上就是点集的虚树大小. 而关于虚树, 我们有一个经典结论: 设点集 按任意 DFN 排序为 , 则虚树大小为 .
不过, 这个计算方法仍然以来整个点集, 但我们可以拆开和式, 将贡献转化为 " 对 " 的贡献. 假设 DFN 的跨度 (覆盖区间长度, 包含左右端点) 为 , 则满足 , 并且 DFN 相邻的集合 的数量为 . 注意到如果我们将 按 归类, 求出每类中 之和, 就可以差卷积求出答案.
最后的问题变为对于每个 和跨度为 的所有点对 , 求出 之和. 这个距离自然又可以拆成 , 前面两项可以差分 (设 的 DFN 为 , 则 从 起贡献两次, 从 起少贡献一次, 从 起少贡献一次); 后面这个可以先展开成 , 设 的子树大小为 , 则当 时 , 时 , ..., 也就是一个二阶差分.
总之, 一次 DFS 挂上差分, 然后算两个差卷积就能求出答案. 复杂度 .
「AGC 006C」Rabbit Exercise
Tags:「B.倍增」「C.性质/结论」
我算是知道 NOIP 2021 C 的原题是什么了.
设 表示 号兔子当前的期望位置, 若 需要跳, 跳完后 , 考虑差分 , 就有 . 倍增这个置换就能求出最终的差分, 也就得到最后的 . 复杂度 .
「AGC 006D」Median Pyramid Hard
Tags:「A.分治-二分答案」「C.性质/结论」
一遍猜对, 乐.
中位数? 第一个想法当然是二分答案, 紧接着发现难点在于模拟一个 01 序列递推的最终结果.
注意到, 如果 , 在不考虑撞到边界的情况下, 这个值可以左右扩散. 当然, 如果 (中间位置), 这个 就一定能一路扩散到 处, 得到答案. 当然, 如果一个 的扩散和 的扩散挨在一起, 他们就不能再侵犯对方的领地了.
所以, 我们只关心是 先占领 位置还是 先占领 位置. 直接找到 左右侧第一对 , 讨论这两对数的存在性和值, 就能单次 判断答案是否不小于某值. 结合外层二分, 复杂度 .
「AGC 006E」Rotate 3x3 *
Tag:「C.性质/结论」
好吧, 这就是 Ad-hoc Grandmaster Contest.
判掉过于离谱的无解后, 可以将原序列转化成一个带正负号的排列. 每次操作选取相邻三个数翻转并取相反数, 需要判断给定排列是否能操作为 .
奇偶是隔离的, 我们需要考虑顺序和正负两个要素, 而前一个要素让我们想到逆序对. 进一步发现, 奇序列的逆序对 可以带走偶序列任意奇数个负号; 偶序列的逆序对 可以带走奇序列任意奇数个负号. 那有解条件显然就是: 奇序列逆序对奇偶性等于偶序列负号奇偶性, 偶序列逆序对奇偶性等于奇序列负号奇偶性. 逆序对奇偶性为排列长度减去置换环数量, 可以 算. 那么本题就 结束了.
「AGC 006F」Blackout *
Tags:「A.构造」「C.性质/结论」「C.思维」
基本的题意转化: 给定一个有向图 , 若 , 则可令 . 我们需要求出最终的 .
注意 "选出 " 的条件给我们一个暗示: 一条链上连续三个点的 "地位" 是不同的, 进而考虑三染色 (有点牵强啊). 设 的颜色为 , 则经过 时 , 反向经过 时 .
这就带来了很多需要讨论的情况. 对于一个弱连通块:
若能够三染色, 并且只用到不超过两种颜色, 显然无法加边, 贡献就是连通块原有边数.
否则若能三染色, 设三色点集大小为 , 结论上, 最终贡献为 . 归纳证明, 我们需要说明对于任意 , . 设 是弱连通的, 且能够三染色, 则令 成为最终的 . 根据染色规则, 所有新加的边不会破坏 能三染色的性质. 这时, 向点集加入一个点 并加入一些关于 的边, 不妨设存在一个 的 , 使得 , 那么 被确定为 . 此时, 对于任意 的 , 根据归纳假设, 有 , 因此 . 对于任意 的 , 根据已有结论, 存在一个 , 使得 , 因此 . 不可能存在其他任何边, 不然必定破坏三染色性质.
再否则, 即图无法三染色. 设弱连通块的大小为 , 结论上, 最终贡献为 . 我们可以先删掉足够的边使得图弱连通且能三染色, 连出如上一种情况的所有边. 接着加入一条矛盾边, 并说明此时足以构造出完全图. 证明类似上一种情况.
于是就 完成了.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2020-09-13 Solution -「LOCAL」舟游