E - Permute K times 2 解説
by
miscalculation53
2^K になる理由
以下では \((1, \dots, N)\) の順列のことを単に順列と呼びます。また、順列 \(P\) に対して、\(P_i\) のことを \(P(i)\) とも書くことにします。
順列 \(P, Q\) に対して、\(R(i) = Q(P(i)) \: (1 \leq i \leq N)\) を満たす順列 \(R\) のことを、\(Q\) と \(P\) の「積」だと思って \(QP\) と書くことにします。この積は結合則を満たします。
本問の操作は、\(P\) を \(P^2 \: (= PP)\) で置き換えることとみなせます。この見方をすると、操作のたびに \(P, P^2, P^4, P^8, \dots\) と置き換わっていき、特に \(K\) 回の操作後に \(P^{2^K}\) となっていることがわかりやすいと思います。
この考え方の背景には 対称群 があります。競技プログラミングで出題される順列の問題には、対称群の考え方が活用できることも多いです。
投稿日時:
最終更新:
