AT_arc102_d [ARC102F] Revenge of BBuBBBlesort! 题解
显然不满足“奇数位都是奇数,偶数位都是偶数”的排列一定无法排成升序,以下“序列”默认均满足这个条件。
定义“操作”指交换任意一个相邻三元组的 1,3 位,即不一定满足题目要求,但要保证操作后逆序对数减小。
特别地,称满足题目要求的操作为“合法操作”。容易发现一个操作合法当且仅当其能消去 $3$ 个全局逆序对。
引理:任意序列均可用若干操作排好序。证明:考虑对奇偶位置分别冒泡。
结论:某序列可用若干合法操作排好序,当且仅当其中全局逆序对数为奇数位间形成的逆序对数与偶数位间形成的逆序对数之和(下称“内部逆序对”)的三倍。
证明:穷举操作三元组的大小关系,发现每次操作必会使内部逆序对减一,于是内部逆序对数 $k$ 就是操作步数。
必要性(前推后):该序列可用 $k$ 步合法操作消去全部全局逆序对,而 $k$ 步合法操作会消去 $3k$ 个全局逆序对,则全局逆序对数 $3k$ 为内部逆序对数 $k$ 的三倍。
充分性(后推前):由引理,该序列一定可以用 $k$ 步操作消去全部 $3k$ 个全局逆序对。
每步最多消去 $3$ 个全局逆序对,所以 $k$ 步只能消去 $\le 3k$ 个全局逆序对,则取到等号时所有操作都合法。
所以该序列可用 $k$ 步合法操作排好序。