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)\),机子好评。

首先拆一下式子发现:

\[\sum\limits_1^k{a_{p_i}}+\sum\limits_1^{k-1}|b_i-b_{i+1}| \]

\[=\sum\limits_1^ka_{p_i}+|b_1-b_2|+|b_2-b_3|+\cdots +|b_{k-1}-b_k| \]

不妨令 \(b_1\ge b_2\ge b_3\ge\cdots\ge b_k\),此时发现:

\[原式=\sum\limits_1^ka_{p_i}+b_1-b_2+b_2-b_3+\cdots+b_{k-1}-b_k \]

\[原式=\sum\limits_1^ka_{p_i}+b_1-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

posted @ 2024-03-06 20:43  BYR_KKK  阅读(18)  评论(0编辑  收藏  举报