I - ツインリバース Editorial by snuke
※現地で解説を聞いてた記憶を辿って書いています
A,B,C を列、A’, B’, C’ をそれぞれをリバースした列、x, y を要素とします。
A x B y C
→A' x C' y B'
→C x A y B
→C' x B' y A'
のように操作(x, y, x の順に選ぶ)を行うことにより、「xとyをswapして全体をリバースする」という操作が実現できます。
これを利用すると、偶置換の列ならば高々 \(3N\) 回の操作でソートできます。
奇置換の場合
- \(N≡2\ (mod\ 4)\) :全ての操作が偶置換なので不可能
- \(N≡0\ (mod\ 4)\) :全ての操作が奇置換なので、適当に \(1\) 回操作を行ってから上記をやればよい
- \(N≡1,3\ (mod\ 4)\) :\(i=1,2\) のいずれかが奇置換の操作になっている
posted:
last update: