这是一篇口胡题解。
题目链接
CF1896E Permutation Sorting
解题思路
写一个题解区没有的做法。
首先有结论,每个点最多操作 \(n\) 次。
为啥呢?你发现对于一个序列 \(a\),若你执行了 \(n\) 次,此时最多形成一个大小为 \(n\) 的置换环,此时操作 \(n\) 次,每个点必定能到达他应该到达的位置,否则每个环单独考虑,次数显然更小。
那么一个经典的套路,在后缀建立 \(n\) 个点,前缀建立 \(n\) 个虚点,那么此时每次操作等价于将最右边的不满足要求的点往左移动至最右侧没有数字的虚点,注意及时删去满足要求的点,此时线段树维护即可。
时间复杂度 \(O(n \log n)\)。