【? ?】CF2102D Quartet Swapping
题目大意
给你一个序列 \(p\),同时定义一种操作:选择一个 \(i\) ,并交换 \(p_i\) 和 \(p_{i+2}\) 以及 \(p_{i+1}\) 和 \(p_{i+3}\) 。操作可执行无数次,求最终字典序最小的序列。
首先可以注意到,无论如何操作,一个数的下标的奇偶性是不会变的。所以我们第一想法就是把奇下标和偶下标的数内部从小到大排序。但是注意到只剩最后三个数时是无法再进行操作的,即 \(p_{n-2}\) 和 \(p_n\) 的顺序可能会反。
序列中交换相邻两项达成某一目的很容易让我们想到求逆序对的方向,在这里也是,每进行一次操作,奇数部分和偶数部分的逆序对数都会 +1或-1,进一步可以发现一次操作不会改变两部分逆序对数的奇偶性是否相等的情况。由此可得,如果最初奇数部分和偶数部分的逆序对数奇偶性不等,那么最终 \(p_{n-2}\) 和 \(p_n\) 的顺序会反,即残留了一个逆序对,否则不会反。

浙公网安备 33010602011771号