ARC 板贺
AtCoder [ARC099B] Snuke Numbers
一种题目:要求 列出 前
小 的所有满足条件的数。
这时候有个 Trick:可以考虑求一个
此题中,
AtCoder [ARC099C] Independence
将一给定无向图 按点集 分成两个 完全子图,判断是否可行;若可行,最小化 被任一子图完全包含的边 的数目。
众所周知 团 即为 补图 中的 独立集。观察
这是因为考虑套路:把 划分问题转化为染色问题。任一对同色节点相邻 变为补图中 任一对同色节点不相邻,后者即相当于:要求划分为一张二分图。这可以用染色法轻易解决。
断言:对于一个连通二分图,将其 二染色 的方案是 唯一 的(除交换左右部外)。
引理:对于一个非连通二分图,其每个连通块均为二分图(允许有一部为空)。
因此可以对所有连通块判断是否为二分图。若有不是者,则整个划分不可行。否则可以求出每个连通块的两部分点数
回到此题,相当于考虑两个点集大小为
这时候已经是 集合二划分最小化大小差 的板子题,直接用一个 可行性背包 就可以解决。
AtCoder [ARC099D] Eating Symbols Hard
对于这种状态内维护一个序列的逆题,直接对于进行序列哈希。发现传统哈希即可支持按位左移 / 右移 / 单点加减 / 差分,即得到 区间 哈希值,但是还需要考虑预处理 前缀 的位移和
设
扫描线加上 map
随便统计即可。注意 Hash 强度,考虑双模数 / 双基底。
AtCoder [ARC100D] Colorful Sequences
不会。
AtCoder [ARC101C] Ribbons on Tree
带容斥系数 DP 板题。可以理解为每个方案有一个 权值
就本题而言,有一个显然的 枚举断开的边集 的
目标:
AtCoder [ARC101D] Robots and Exits
最多可能有
考虑两边(有一个方向上没有出口)的 bot 毫无贡献(选择固定),在每个方案的最后一定能让这部分中剩下的出去即可。
只考虑其余每个 bot,它选择左还是右取决于 首先移动到哪个出口。形式化地,考虑第
考虑 几何意义(神仙!),则
CAUTION:没有拐点,即全部先满足
也是合法方案。
目标:
AtCoder [ARC102C] Stop. Otherwise...
考虑对于每个
为了做到
AtCoder [ARC103C] Tr/ee
简单题,首先判一下存在解的充要条件:
构造:从大到小枚举每个存在的
AtCoder [ARC103D] Distance Sums
考虑给 数值不重复 数组
也就是:
最大的点是叶子。 最小的点是重心。(注:其实 城市建造 就是一个以重心为中心递归做下去的题目,这里和此题类似)然后考虑从重心出发,运用 cmd 的 按重心移动 套路,考察重心旁点的 值的性质。也就是(任取一个根后)
不妨以重心为根,考察之前所说的
总结:在 重心 和 叶子 两类特殊节点的基础上逐步外推。
但这样得到的树,仅仅保证了
AtCoder [ARC103D] Distance Sums
全部减去平均数然后多重背包处理。注意到值域达到
AtCoder [ARC105B] MAX-=min
考虑这个操作实际上就是
AtCoder [ARC105C] Camels and Bridge
考虑
之后问题即:求出满足所有
发现这个东西只和集合
AtCoder [ABC290F] Maximum Diameter
Vandermonde 卷积
组合意义易证,亦可用二项式定理:
,后者两边分别化开比较系数可证上式。
考虑合法序列仅有有限种,具体来说即
接下来考虑每个序列的贡献,即给定度数数组
考虑证明可取到此上界。考虑从任意状态归纳,可以发现:若有不在直径上
即答案为:
回到计数。发现贡献仅和
观察到卷积形式,直接拆开:
倒数第二步使用吸收恒等式,目的为吸收
最后一步使用 Vandermonde 卷积。后半部分将
AtCoder [ARC108D] AB
原范围
先考虑
。此时只有 共 种方案。 ,则考虑从 出发,在 与 之间,可以任意在一个 之后加入 ,在一个 后面(与最后的 加入 ,形成 所有以 起始、 结尾的串。故答案为 。 ,则考虑从 出发,在 与 之间,可以任意在一个 之前加入 ,在一个 之前加入最多一个 ,形成 所有以 起始、 结尾、 不连续的串。故答案为 。
对于
所有结果均可以用(矩阵)快速幂求出。
AtCoder [ARC110D] Binomial Coefficient
非常好问题。
给定序列
,对于所有长度为 且和不超过 的非负整数序列 ,求 之和,对 取模。 。
首先尝试将 和不超过
组合意义
组合意义化简的原理即:对同一问题的解给出不同表达式以构造恒等式。
考虑处理这个连乘,即 乘法原理:考虑构造多个互不影响的组合数形成的问题。
注意到
暴力计算组合数做到
代数推导
背包型的计数合并考虑用 OGF 解决。即求
由
求上式中
中
可得最终答案:
[ARC111C] Too Heavy
首先若初始时存在
对于排列
但是环上相邻两个位置若直接交换,可能会有很大的
考虑引入交换的 中转,定义为置换环上
不會「填数游戏」,我該怎麽辦?
RT
[ARC112C]
树形 DP 题。
[ARC112D]
二分图题。
[ARC113D]
[ARC114D] Moving Pieces on Line
做过,但差点还是不会。
考虑这个操作就是选
直接差分。然后已经固定的端点位置异或上
就是要把前者和后者两两匹配起来,形成
但是在
带权匹配问题,因为在序列上,直接二维 DP 即可
[ARC115A] Two Choices
不会做 A,莼菜。
条件即
[ARC115B] Odd Degree
观察题。
首先要注意到(无脑选手表示真想不到吧)
若 图为一棵树,可以从叶子出发,自底向上归纳得到:选出度数为奇数的 奇点集方案 与 合法边集方案 一一对应。因此方案为
、
进而推广到有环情形。随便取一棵生成树,可以发现任意 非树边 是否取,都会改变两个点的 树边度数奇偶性,而对应树边的所需取法也会改变。因此。当剩下
进而推广到多个连通块。要求奇点总和
[ARC149B] Two LIS Sum
遇事不決考慮貪心。注意任意次邻项交换等价于任意两项交换。对
这就证明了
DP 求出
[ARC149D] Simultaneous Sugoroku
整體法大車創飛不可做題 /oh
部分题目中多组询问相对独立,但每次回答无法优化到
等以下;这时可以手动 整体考虑,例如整体二分等,以便充分利用信息。
离散的点移动起来是
考虑一次平移,区间会变成
Trick:对于
和 ,其经过相同 序列的变换后得到的结果 仍互为相反数。
- 我们每次只维护一段符号相同的区间
的情况。 - 若在执行当前操作后符号不完全相同了,则利用上面的对称性将符号不同的两边中元素数量较少的一边扔了——反正后面可以通过对称性得出(实现时可以建边处理);并对恰好可以取到
的位置打上标记。 - 最后 dfs 一遍推出被扔掉的点的信息。
发现这样每次只需要维护
[ARC150B] Make Divisible
根號分治題如果標個「Tag:根號分治」往往簡單得多,但這是需要自己想到的。所以什麽題都嘗試一下就好了。
- 其實也可能可以看數據範圍決定。例如此題:
-
显然在最优方案中,
。若 很小就可以暴力枚举 ,然后易 求 。 -
我是唐诗。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!