CF1375E Inversion SwapSort
发现逆序对不是很好入手,考虑最终构成的序列是单调递增的情况。
不妨考虑这是一个排列的情况。
显然离散化一下答案不会改变。
发现 $n$ 肯定是在最后面,那么对于一开始的序列我们不妨考虑将 $n$ 放到最后面之后转化成一个子问题。
那么对于一个合法的子问题,我们必须保证对于原来 $a_u < a_v$ 的情况,还有 $a_u < a_v$。
不妨考虑之前最后一个位置是 $x$,那么对于 $\ge x$ 的数我们可以进行一次循环移位,这样可以保证位置 $n$ 肯定是在正确的位置的。
具体来说就是 $x + 1$ 和 $x$ 交换位置, $x + 2$ 和 $x + 1$ 交换位置。也就是向后进行循环移位,可以发现肯定是合法的。
之后直接根据子问题去做即可复杂度 $O(n^2)$。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Legendgod's Blog!
评论