10.13
S 组 1 题水平。
由于打完 S 沉浸于 emo,8:30 才发现 ARC 开了,不过 unrated 打着确实欢乐,随便赤!
「KDOI-10」商店砍价
容易发现 \([1,6\times10^5]\) 之间的数才会用第二种操作,枚举这个数之后,删数位的价值就确定了,总价值也就确定了,不过不要忘记不用第二种操作的情况。
「KDOI-10」水杯降温
赛时差分的 \(a_x-\sum\limits_{y\in son_x}a_y\) 导致没写出来。
设 \(b_i=a_i-a_{fa_i}\) ,这样之后 \(1\) 操作为单点加 \(1\),\(2\) 操作为将根节点 \(-1\),且到根路径所有点的不在路径上的直接儿子 \(+1\) 。
我们的目的变成使所有 \(b_i\) 变为 \(0\)。
如果只有单点加 \(1\),那么我们只需要满足所有节点的 \(b\le0\) ,也就是说我们要用若干次 \(2\) 操作使得所有节点的 \(b\le0\) 。
首先除了根节点,其他节点的 \(b\) 都是单调不减的,如果一开始某个节点的 \(b>0\) 那么肯定不合法。
否则我们设 \(f_x\) 代表 \(x\) 子树内进行的 \(2\) 操作次数之和,发现有以下限制。
\(f_x-f_y+b_y\le0\Leftrightarrow f_x\le\min\{f_y-b_y\}\)
\(f_x\le\sum\limits_{y\in son_x}f_y\)
\(\sum\limits_{y\in son_x}\max\{0,f_x+b_y\}\le f_x\)
解释一下,第一个限制是因为 \(f_x-f_y\) 为 \(b_y\) 的增加量,显然 \(f_x-f_y+b_y\) 要小于等于 \(0\) 。
第二个限制比较显然,第三个限制是 \(f_x-f_y+b_y\le0\Leftrightarrow f_y\ge f_x+b_y\) ,也就是说 \(f_y\) 至少为 \(f_x+b_y\) ,把至少的作和显然更要 \(\le f_x\)。
「KDOI-10」反回文串
\(A\) 性质答案显然为 \(\lfloor\frac{n}{2}\rfloor\),每次找出现次数最大和次大的放一起就好,\(n\) 为奇数最后一个串放 \(3\) 个就能解决。
\(B\) 性质,先考虑无解,有两种情况,第一种全为一个字符,第二种是 \(n\) 为奇数,只有 \(1\) 个别的字符且位于中间位置。
设出现次数最多的字符出现次数为 \(cnt\) ,后面称之为众数字符,那么我们的答案就是 \(n-cnt\),考虑如何构造。
设 \(l\) 为第一次出现的非众数字符的位置,\(r\) 为最后一次的位置。这时我们先将 \([l+1,n]\) 里的众数字符归给 \(l\) ,\([1,l-1]\) 的归给 \(r\),对于 \([l+1,r-1]\) 里的非众数字符从 \(l\) 或 \(r\) 里分配一个字符即可。
「KDOI-10」超级演出
对于一个下标 \(i\),我们可以找出最大的 \(pre_i\) 使得 \(\forall l\le pre_i,r\ge i\) ,\(i\) 都能找到一条到达节点 \(1\) 的合法路径,对于每个点我们都扫描它的出点求 \(\max\) ,把询问离线下来就变成了二维数点。但是每个点都扫描他的出点会被卡成 \(O(nm)\),所以我们对出度进行根号分治,若 \(out_i\le\sqrt m\) ,那么暴力扫,否则我们把它压入它出点的 \(\text{vector}\) 中,更新出点时更新 \(\text{vector}\) 里的点就行。
arc185_a
由于 \(n<m\) 所以两人只有分别只剩一张牌的时候才可能出现 \(sum\equiv0\pmod m\) ,由于是 \(Alice\) 先放最后一张牌,所以如果 \(Bob\) 能挑出来一张数字为 \(k\) 牌,使得 \(n(n+1)-k\equiv0\pmod m\) ,那么 \(Bob\) 赢,否则 \(Alice\) 赢。
arc185_b
贪心,若 \(a_i>a_{i-1}\) 看能不能在满足单调不减的情况下将 \(a_i\) 减少,往前补。若 \(a_i<a_{i-1}\) ,那么从 \(a_{i+1}\) 往这里搬就行。
arc185_c
枚举 \(A_k\) 现在问题转化为 \(A_i+A_j=X-A_k\) ,这个东西可以卷积 \(O(n\log n)\) 求,判断一下是否有一个下标被用了多次就行。
arc185_e
添加一个数后的答案为 \(sum_i=2sum_{i-1}+\sum\limits_{j=1}^{i}\gcd(a_j,a_i)\times2^{j-1}\) 。
求 \(\sum\limits_{j=1}^{i}\gcd(a_j,a_i)\times2^{j-1}\) 考虑枚举 \(\gcd\),但是这样会算重,由于我们有 \(\sum\limits_{d|\gcd}\varphi(d)=\gcd\) ,所以筛个 \(\varphi\) 就行了。