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 题怎么打成这鸟样的啊。