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

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

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

V-Sort

問題に戻る

解説

各位置を頂点とし、許される交換に対応する無向辺を張る。同じ連結成分内では任意の並べ替えができるため、各成分の現在値の多重集合と目標値の多重集合が等しいことが必要十分条件である。位置 Ai,BiA_i,B_iAi​,Bi​ の目標値はいずれも iii である。

  • サブタスク 1(X=Y=0X=Y=0X=Y=0):交換できるのは Ai,BiA_i,B_iAi​,Bi​ だけである。両方の目標値が iii なので、最初からすべて正しくなければならない。O(N)O(N)O(N) 時間で確認する。
  • サブタスク 2(X=Y=1X=Y=1X=Y=1):二つの成分は A1,B2,A3,B4,…A_1,B_2,A_3,B_4,\ldotsA1​,B と である。それぞれに から が一度ずつ必要である。頻度を調べれば時間・空間ともに となる。 では二つの孤立頂点となる。
  • サブタスク 3(X=0X=0X=0):Y=0Y=0Y=0 ならサブタスク 1 と同じである。Y>0Y>0Y>0 なら Ai,BiA_i,B_iA がつながり、添字を ずつ移動できるため、成分は添字を で割った余りごとに分かれる。位置 の値 が を満たし、各値が全体で二度ずつ現れることを調べる。時間・空間ともに である。
  • サブタスク 4(N≤5N\leq5N≤5):愚直解法として 2N2N2N 頂点に Floyd–Warshall 法を適用し、各成分の現在値と目標値をソートして比較する。時間計算量は O(N3)O(N^3)O(N3)、空間計算量は O(N2)O(N^2) である。
  • サブタスク 5(N≤3 000N\leq3\,000N≤3000):隣接行列を作り、各頂点で全頂点を調べる DFS により成分を求め、頻度を比較する。時間・空間ともに O(N2)O(N^2)O(N2) である。ファイル内の ∑N≤3 000\sum N\leq3\,000∑N≤ より となる。
  • サブタスク 6:各頂点の高々二つの隣接頂点を添字から直接計算し、非再帰 DFS を使う。現在値の頻度を増やし、目標値の頻度を減らす。触れた要素だけを確認して初期化すれば、時間・空間ともに O(N)O(N)O(N) となる。成分ごとに頻度配列全体を初期化してはいけない。

X=NX=NX=N または Y=NY=NY=N なら対応する種類の辺はない。孤立頂点も確認する。値の重複があるため総和だけの比較では不十分である。全体の時間計算量は O(∑N)O(\sum N)O(∑N) となる。添字と頻度の絶対値は 1 000 0001\,000\,0001 以下であり、符号付き 64 ビット整数を超える演算は不要である。

Solution written by GPT

2
​
,
A3​
,
B4​
,
…
B1,A2,B3,A4,…B_1,A_2,B_3,A_4,\ldotsB1​,A2​,B3​,A4​,…
111
NNN
O(N)O(N)O(N)
N=1N=1N=1
i​
,
Bi​
YYY
YYY
iii
vvv
(v−1) mod Y=(i−1) mod Y(v-1)\bmod Y=(i-1)\bmod Y(v−1)modY=(i−1)modY
O(N)O(N)O(N)
O
(
N2
)
3
000
∑N2≤9 000 000\sum N^2\leq9\,000\,000∑N2≤9000000
000
000