AtCoder AGC073 总结
AtCoder AGC073 总结
A
画一下图可以知道,对于已选的一个区间,若前面有 \(x\) 个已选区间和它有交,那么这 \(x\) 个区间会把它划分成 \(x+1\) 块,那么会贡献 \(\lceil\frac {x+1} 2\rceil=\lfloor \frac x2\rfloor+1\) 个黑块。
双指针求出前面最多有 \(m\) 个与它有交,贡献为
瓶颈在于算后面的式子。注意到:
做完了,复杂度 \(O(n)\)。
以下是式子的证明。考虑把奇偶展开:
则原式等于
有
对于 \(m\ge 1\),奇数个元素的子集个数为 \(2^{m-1}\),这是因为考虑第一位选 \(0\) 或 \(1\)、后面不变,会构成偶数到奇数的双射。即
代入并化简原式即得证。
B
记 \(f(a_1,a_2,a_3,\dots)\) 为题目所求 \(a\) 序列的答案,有结论 \(f(a_1,a_2,a_3,\dots)=a_1+f(a_1,a_2-a_1,a_3-a_1,\dots)\),辗转相除法即可,复杂度 \(O(n\log V)\)。
证明:
性质 A:首先合法的移动方式一定每次从 \(S=\{a_1,a_2,a_3,\dots,a_n,2a_1,3a_1,4a_1,\dots\}\) 里选,且不会连续往一个方向走两次,因为答案一定不会超过 \(a_1+a_2\)。
我们先证明 \(f(a_1,a_2,a_3,\dots)\le a_1+f(a_1,a_2-a_1,a_3-a_1,\dots)\)。即已知后者的一个构造,求前者的构造。后者若一开始走 \(+c_1\),那么我们可以走 \(+(c_1+a_1)\);之后每走 \(+c\),我们就走 \(-a_1,+(c+a_1)\);若每走 \(-c\),我们就走 \(-(c+a_1),+a_1\);最后走 \(-c_k\),我们就走 \(-(c_k+a_1)\)。显然这样构造是合法的。
我们再证明 \(f(a_1,a_2,a_3,\dots)\ge a_1+f(a_1,a_2-a_1,a_3-a_1,\dots)\)。即已知前者的一个构造,求后者的构造。由性质 A,前者的移动方式一定是往两个方向交替走的,若其走 \(+c\),我们就走 \(+(c-a_1)\);若其走 \(-c\),我们就走 \(-(c-a_1)\)。这都是可以表示的,由于前者不小于原点,可知这种构造也不小于原点,且满足不等式。
得证。
C
题目等价于将树随意划分成若干连通块,每个连通块的代价是 \((2sz\times n^{sz})^{-1}\),一种划分方案的代价是所有连通块代价的乘积,求所有划分方案的代价和。树上背包即可,复杂度 \(O(n^2)\)。

浙公网安备 33010602011771号