十一月做题集
posted on 2025-11-27 11:18:52 | under | source
AT_arc112_f [ARC112F] Die Siedler
注意到操作顺序不重要,只要无法操作了就是最终局面。
注意到进行逆操作不影响结果,因此不妨全转化为 \(a_1\)。对于每个牌组也是如此,记为 \(c_i\)。注意这是个环,所以 \(M=n!2^n\) 个 \(a_1\) 可以被转化为一个。那么我们只关心 \(a_1\) 的值。
考虑最终 \(a_1\to s\) 是否可行,记牌组选取次数为 \(k_i\),那么要有 \(\sum c_ik_i\equiv s-a_1 \pmod M\)。施以裴蜀定理,有解当且仅当 \(\gcd(c_1\dots c_m,M)\mid s-a_1\),记 \(p=\gcd\)。
考虑根号分治,若 \(p\ge \sqrt M\) 那么暴力枚举 $s=a_i,a_i+p,a_i+2p\dots $ 即可。\(p<\sqrt M\) 考虑最终得到的序列为 \(b\),选一个 \(b_i\) 会导致 \(s\gets s+(i-1)!2^{i-1}\),那么同余最短路即可。复杂度 \(O(n\sqrt M)\)。注意不能一个元素都不放。
总结:
- 考察操作的性质很有效,例如操作顺序、逆操作等,以此将一个复杂的序列化归为一个数。
- 根号分治相对平凡,最后倒推并利用同余最短路很巧妙。
- 货币兑换状物可以考虑全化为最小单位。
P14510 夜里亦始终想念着你 miss
操作等价于将一个空位移动 \(2\) 格,过程中不允许空位相撞。考察一个 \(S\) 能否得到,相当于将空位移到非 \(S\) 的地方。
贪心地想我们必然从左到右尽量填入靠左的空位连续段,但不好计数,换个叙述方式:先将空位靠左紧密排列,从左到右考虑 \(S\) 每个元素,若某个空位与之重合,就将它和它后面空位右移,移出界输。
对贪心计数其对应 \(S\) 数量,记靠左状态下最右的空位为 \(p\),总共 \(c\) 个空位,枚举总右移次数 \(i\),将这些右移分配给每个空位。考虑 \(S\) 的限制,每次右移代表其起点处 \(S=1\),同时最终每个空位 \(S=0\),显然这些限制不交,那么 \(S\) 方案为 \(2^{n-p-c}\),写出式子:
每次修改对 \(p,c\) 造成 \(O(1)\) 变化量,可推式子得到答案变化量。但你观察式子形态,可化成 \(\sum 2^{n-i}{{i}\choose {m}}\) 状物,有结论:
证明的话考虑其在杨辉三角上的系数,相当于一列向上的二次幂的形式,利用组合数递推式,每次将其右移一列,相当于每个数向右下移动并系数除二,将末尾的 \(1\) 留在 \(n+1\) 行。
组合数下指标求和易支持 \(n,m\) 加减 \(1\)。一般情况莫队即可。
总结:
- 适当转化视角、对问题取反或许能豁然开朗,空位显然比连续段好想。
- 计数对象很多样,为了避免算重通常采用贪心策略以确保唯一性,而且问题可变为:统计每种贪心策略对应的状态总和。
- 组合数恒等式要记一下。组合数下指标求和可莫队。

浙公网安备 33010602011771号