I - ツインリバース Editorial by snuke


※現地で解説を聞いてた記憶を辿って書いています

A,B,C を列、A’, B’, C’ をそれぞれをリバースした列、x, y を要素とします。

  • A x B y CA' x C' y B'C x A y BC' 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: