公式

B - The Honest Woodcutters 解説 by vwxyz


原案:vwxyz

\(i\) を持っていたのは木こり \(B_i\) であり、木こり \(B_i\) は斧 \(A_{B_i}\) を持っていたと主張しています。
したがって、木こり \(B_i\) が本当のことを言っている条件は \(A_{B_i}=i\) です。
制約から、\(B_1,B_2,\dots,B_N\)\(1,2,\dots,N\) はちょうど \(1\) 回ずつ登場します。
したがって、各 \(i\) について \(A_{B_i}=i\) を満たしているかどうかを判定すればよいです。
計算量は \(O(N)\) です。


本問題の答えが Yes となるようとき、\(A\)\(B\) はそれぞれもう一方の逆順列と呼ばれます。
\(A\)\(B\) が長さ \(N\) の順列であるとき、

\(A\)\(B\) の逆順列である
\(\Leftrightarrow\) \(B\)\(A\) の逆順列である
\(\Leftrightarrow\) すべての \(i\)\(A_{B_i}=i\)
\(\Leftrightarrow\) すべての \(i\)\(B_{A_i}=i\)

が成り立ちます。

投稿日時:
最終更新: