CF1935
Good contest.
A 比较一眼。
B
首先发现如果存在合法方案,则一定存在分为两段的合法方案。
因为考虑 \((l_1,r_1),(l_2,r_2)\),设 \(k=\operatorname{mex}(l_1,r_1)\),则合并为 \((l_1,r_2)\) 后 \(k\) 一定不会减小。由于 \(k\) 不存在于 \((l_1,r_1),(l_2=r_1+1,r_2)\) 中,所以 \(k\) 不存在于 \((l_1,r_2)\) 中,可以合并。
那我们钦定 \(l_2=1,r_2=n\),不断增大 \(l_2\),可以发现 \(\operatorname{mex}(l_1,r_1),\operatorname{mex}(l_2,r_2)\) 分别单调不降和不升。
后者好维护,前者可以用并查集维护。
时间复杂度 \(O(n)\)。
C
写的 \(O(n^2\log^2 n)\),机子好评。
首先拆一下式子发现:
不妨令 \(b_1\ge b_2\ge b_3\ge\cdots\ge b_k\),此时发现:
所以我们只需将序列按照 \(b\) 从大到小排序后找到最大的 \(k\) 即可。
考虑二分。
对于 \(mid\),我们不妨枚举 \(i\) 作为起点,\(j\) 作为终点,问题就变成了能否从 \(i+1\sim j-1\) 中选择 \(k-2\) 个数使得式子 \(\le l\)。
贪心发现 \(k-2\) 个数一定是前 \(k-2\) 小的 \(a_i\),可以用堆在递推时维护。
警钟长鸣:不要开 1e6 个 pq
D
Good problem.
从所有 \((x,y)\) 的角度来考虑。
首先满足 \(0\le x\le y\le c\) 的 \((x,y)\) 组数为 \(\frac{(c+1)(c+2)}{2}\),可以等差数列求解。
现在来容斥。
首先容斥掉 \(x+y\in s\) 的 \((x,y)\),发现共有 \(\sum \lfloor\frac{d_i}{2}\rfloor+1\) 组。
然后容斥掉 \(y-x\in s\) 的 \((x,y)\),发现共有 \(\sum c-d_i+1\) 组。
发现有些组会被容斥两次,需要容斥回来。
可以发现,不存在被容斥三次的情况,因为 \(d_i\) 各不相同。
于是我们需要容斥回来 \(x+y\in s,y-x\in s\) 的 \((x,y)\),不妨设 \(x+y=d_i,y-x=d_j\)。
解一下方程组,发现 \(x=\frac{d_i-d_j}{2},y=\frac{d_i+d_j}{2}\),由于必须是整数,所以 \(d_i\equiv d_j(\bmod 2)\)。
于是我们就可以根据奇偶性开心的容斥啦!
E