Codeforces Round 915 (Div. 2)
A
略。
B
略。
C
玛德被爆了。
其实你可以发现因为第一次找出来的就是最长的那个子序列, 所以操作完以后其实就是把那个子序列 reverse 了, 唯一的坑点在于有多个最大值的时候不用移动长度次, 移动长度减去最大值个数加一次就可以了。
D
玛德被爆了。
发现删掉第一个然后加到最后一个位置, 维护所有mex就是一个后缀赋值然后最后加一个的问题, 使用 deque 维护所有连续段就行。
E
总共大小不同的子树不超过 $\log_2 n$ 个是线段树的经典结论。考虑贡献始终是关于根节点的一次函数, 维护 $F(x) = kx + b$ 这个函数的系数即可, 这个理解挺精巧的。
F
最重要的观察是, 好点 $i$ 一定有 $i = p_i$, 那显然就只有 $2n$ 对可能的交换, 因为你交换总得能新产生一对才优秀, 那么考虑要么把 $i$ 归位, 要么 $i$ 已经归位了, 调整前后最大最小值的位置使得 $i$ 满足条件。 暴力判断这 $2n$ 对即可。
玛德这 shaber 题怎么打成这鸟样的啊。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 wrpwrpのBlog!