DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord認証を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

半分並べ替え

問題に戻る

解説

誤っている位置の集合を M={i∣Pi≠i}M=\{i\mid P_i\ne i\}M={i∣Pi​=i} とし、m=∣M∣m=|M|m=∣M∣ とする。

m=0m=0m=0 なら答えは 000 である。

1≤m≤N1\le m\le N1≤m≤N なら答えは 111 である。誤っている位置をすべて選び、ちょうど NNN 個になるまで固定点を追加すれば、1 回の並べ替えですべてを正しい位置にできる。

以下、m>Nm>Nm>N とする。2 回の並べ替えで選ぶ位置集合を A,BA,BA,B とする。∣A∣=∣B∣=N|A|=|B|=N∣A∣=∣B∣=N より、

∣A∩B∣=∣{1,⋯ ,2N}∖(A∪B)∣|A\cap B|=|\{1,\cdots,2N\}\setminus(A\cup B)|∣A∩B∣=∣{1,⋯,2N}∖(A∪B)∣

が成り立つ。A∪BA\cup BA∪B の外側の位置は一度も操作されないので、最初から固定点でなければならない。

固定点が 1 つ以上存在する場合、答えは 222 である。m>Nm>Nm>N なので 1 回では不可能であり、1 つの固定点を両方の選択集合の外側に置くことで常に 2 回以内に整列できる。

次に固定点が 1 つもない場合を考える。このとき A∪BA\cup BA∪B の外側には位置を置けないので、上の等式から A∩B=∅A\cap B=\varnothingA∩B=∅ となる。したがって A,BA,BA,B は全位置を二分する。AA の位置は 1 回目でしか操作されないため、1 回目の終了時点ですべて正しくなければならない。

順列をサイクル分解する。あるサイクルの一部だけを AAA に入れると、その中の少なくとも 1 位置が必要とする値が BBB に残る。よって AAA はいくつかのサイクル全体の合併でなければならない。逆に、長さの合計がちょうど NNN になるサイクルを選べれば、それらを 1 回目で、残りを 2 回目で整列できる。

したがって固定点がない場合、2 回で整列できるための必要十分条件は、サイクル長の一部の和がちょうど NNN になることである。この条件は部分和 DP により O(N2)O(N^2)O(N2) で判定できる。

そのような部分集合が存在すれば答えは 222、存在しなければ答えは 333 である。後者では 2 回が不可能である一方、最初の 1 回で固定点を 1 つ作れば、さらに高々 2 回で整列できる。

よって答えは常に 0,1,2,30,1,2,30,1,2,3 のいずれかである。各テストケースの計算量は O(N2)O(N^2)O(N2)、メモリ使用量は O(N)O(N)O(N) である。

Solution written by GPT5.6

A