Solution Set -「AGC 010~012」C~F
「AGC 010C」Cleaning
Tag:「B.贪心」
你不觉得我出的这道题要难一点嘛. (
定义一个点的 "输出量" 为其需要的父亲向子树内走的路径条数. 叶子的输出量就是点权, 其他点的输出量可以直接唯一确定, 如果违背了一些条件自然就无解了.
「AGC 010D」Decrementing
Tag:「C.性质/结论」
如果不除 , 设 , 则先手的获胜情况仅与 的奇偶性有关. 另一方面, 如果 , 这个除法也并不会改变 的奇偶性, 也就是不影响答案. 因此, 我们需要关注的是 中因子 的情况.
初步想一想策略: 若当前 下先手必胜, 那么先手疯狂操作偶数, 让 永远不是 的倍数, 后手就寄了; 如果当前 下后手必胜, 并且先手无法一步让 , 先手同理也寄了; 等等, 先手如果可以一步改变 的奇偶性, 那么 中肯定有且仅有一个奇数且其 . 先手只能操作它, 然后直接递归判断就好. 复杂度 , 再算上暴力求 的话就是 .
「AGC 010E」Rearranging
Tag:「B.贪心」
初步解读题意: Aoki 的操作会让序列成为满足从左到右拓扑关系下字典序最大的一个, 而 Takahashi 则要初始化这个序列. 当然啦, 我们肯定是直接构造结果序列, 相当于去规定具体的拓扑关系, 然后在这个拓扑关系下构造最大字典序序列.
先考虑后者: 直接将拓扑排序过程中的队列换成关于权值的大根堆即可.
前面这个 ... 根据 可以生成一系列无向边, 我们的工作是将它们定向, 形成一个 DAG. 其实也是一个贪心: 每次从未遍历过的点权最小的点出发, 按点权升序枚举邻接点递归, 构造生成树. 正确性容易感性理解.
「AGC 010F」Tree Game ^
20221003 C 题. 可算找到这傻瓜题的出处了. (
「AGC 011C」Squared Graph *
Tags:「C.性质/结论」「C.思维」
兔, 根本不会分讨, 根本没有思维.
考虑 与 连通性, 我们需要尝试找到一条从 走到 的路径. 可见, 由于 等价于 , 所以从 走到 相当于让 沿着 挪到 , 同时让 沿着 走到 . 因此, 和 连通的条件是: 原图上存在一对等长的, 分别连接 和 的路径. 稍作简化, 即存在两条长度奇偶性相同的简单路径.
路径奇偶性的话 ... 肯定需要讨论连通块是否是二分子图嘛. 设 分别表示非二分图连通块数量, 二分图连通块数量 (不含单点), 单点数量. 讨论三种连通块内部和之间的连通情况即可计算答案. 复杂度 .
「AGC 011D」Half Reflector *
Tags:「C.性质/结论」「C.思维」
看来这场 AGC 要爆零了 qwq.
不妨讨论小球正在某两个 reflector 中间运动的情况, 用 标记运动方向那么
- .
- .
发现一件事情: 若一个向右滚动的小球的左侧有 , 那么这个 会保持在球的左侧不断地向右移动. 因此, 在这种情况下小球一定会从最右侧离开. 换句话说:
- 只要第一个 reflector 不是 , 小球一定会从右侧离开.
当然, 第一个 reflector 就是 的情况太平凡了, 我们只去研究后者. 根据先前的结论, 小球左侧第一个 再左边的 reflector 的状态一定不会再因当前小球改变了. 况且, 在小球第一次出现在两个 reflector 中间时, 左侧的 reflector 一定是 状态. 所以我们就需要考虑上面列举的两种情况下, 左侧 reflector 的变化情况. 可见, 当右侧为 时, 左侧变为 ; 当右侧为 时, 左侧变为 . 顺便结合边界情况的单独讨论, 我们可以得到一个简洁的结论:
- 当第一个 reflector 不为 时, reflectors 的整体变化情况是: 全部取反, 然后循环左移一位.
到此, 我们已经可以 地模拟整个变换过程了. 接下来的工作无非是找到变换的周期性特点. 注意在一次循环位移后, 最后一个 reflector 一定是 , 则下一次的倒数第二个一定是 , 再下一次倒数第三个又是 , ... ,每两个小球中至少有一个会引起位移, 那么最多 个小球就能让序列恒定在 的状态, 直接去求最终状态就好啦. 复杂度 .
「AGC 011E」Increasing Numbers
Tag:「B.Tricks」
算是经典 trick 吧, 一个 increasing number 可以表示成
设 由 个 increasing numbers 表示, 那么
由于 很随意, 所以只需要 在十进制下的位和不超过 , 我们就能构造出合法解. 又显然 是 的, 所以直接从 开始向上枚举 , 均摊 地维护 的值及其位和即可. 复杂度 .
「AGC 011F」Train Service Planning *
Tags:「A.数学-数学推导」「A.数据结构-线段树」
一大难点是抽象出这个数学情景.
令 表示 车 () 在车站 停留的时间, 表示 车 () 在车站 停留的时间. 同时, 记 , , . 那么, 车行驶在区间 的时间区间为
同理, 车行驶在区间 的时间区间为
对于 的区间, 我们要求
注意两个区间是等长的, 所以有
先整理一下, 令 , 则上式变为
其中, 是单调不降的. 也就是说, 从 , 我们需要给出一个增量 , 使得 不落在某些区间内. 显然, 为了最小化 , 若施加的 , 则 必然处于某个禁止区间的端点上. 用数据结构维护这一贪心过程即可. 复杂度 .
「AGC 012C」Tautonym Puzzle *
Tag:「A.构造」
一看就是倍增构造, 不过如何找到一个能够轻松 的东西捏?
看了一眼题解, 啧, LIS 嘛. 在后面摆一个 , 那么合法子序列总数就是前面部分的非空 LIS 数量了.
「AGC 012D」Colorful Balls
Tag:「A.并查集」
欸不是, 真不觉得这题比上面那个构造简单嘛 ...
有一个简单的暴力: 枚举 个交换关系, 并查集连边. 每个连通块对答案的贡献是一个多重组合数的形式, 可以直接算. 我们只需要简化一下建边的方式.
对于同色交换, 可以简并为和同色中最轻的球的连续交换; 对于异色交换: 显然也应该两种颜色的最轻球先交换. 这里有一个 corner: 有可能某个球无法进行同色交换, 但可以通过最轻的异色球转移到同色最轻球位置, 我们直接认为它可以进行同色交换就好. 复杂度 .
「AGC 012E」Camel and Oases
Tags:「A.DP-状压/插头 DP」「B.倍增」
我们一共有 次跳跃机会, 每次跳跃后必然可以覆盖掉相邻坐标差不超过 的极长段. 换句话说, 我们需要选择 个分别满足相邻坐标差不超过 的连续段覆盖整个 , 并且第一个连续段的位置是被钦定的.
设第一个极长段覆盖了 , 那么我们需要把剩下的可用极长段分为两个集合 , 用 内的极长段尝试覆盖 , 用 内的极长段尝试覆盖 . 注意这其实和 的取值没关系, 我们直接 DP 求出 和 , 分别表示用 内的极长段从左侧开始能覆盖的最大右端点; 用 内的极长段从右侧开始能覆盖的最小左端点. 预处理一下倍增可以 求出来.
然后呢? 如果暴力枚举 去检查 还是 . 不过, 如果从左到右算答案, 可以覆盖到 的 将不断减少, 可以覆盖到 的 将不断增多. 所以我们暴力维护有哪些 满足当前条件, 统计 的数量. 当这一数量非零则有解. 最终复杂度 .
「AGC 012F」Prefix Median *
Tags:「A.DP-计数 DP」「C.思维」
显然 为全局中位数, 这提示我们从后往前考虑 的构造可能会得到更强的限制. 从后往前, 每次可以删掉 的两个元素, 此时 在中出现位置的位移不超过 . 更细致的, 将 排序后, 合法的条件为:
- ;
- .
通过构造方案, 可知这个条件是充要的. 接下来对它 DP 即可. 令 表示从后往前考虑到 , 对于当前这个 , 左边可以直接移动到的位置有 个, 右边有 个. 当边界处出现相等数时视为同一个, 枚举下一个 移动到的位置就能完成转移. 复杂度 .
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2020-10-25 Solution -「ARC 063D」「AT 2149」Snuke's Coloring 2
2020-10-25 Solution -「LOCAL」模板