I - Estimate Order 解説
by
ngtkana
方針:解を全列挙しましょう。
解が与えられると、連結成分の集合が、各連結成分そのもっとも順位の小さいものをキーとして順序付けられます。逆にこの順序が与えられると
の要領で解が一意に定まります。そこでこの順列を全探索し、矛盾しなかったものについて各人の順位としてなにがありうるかをすべて列挙しておけばよいです。
連結成分は最大で \(N\) 個なのでその順列は最大 \(N!\) 通りあり得ますが、同じ形(同型と呼ぶことにします)の連結成分同士の入れ替えを同一視してもよいです。この同一視をした場合、各人の順位までは定まりませんが、連結成分の同型類ごとに先頭からの offset としてありうるものが全列挙できます。
さて同一視された順列の個数を評価しましょう。この同一視をしたとき、特に孤立点同士はすべて同一視されるため、孤立点が \(K\) 個であるとき、連結成分数は \( \lfloor (N + K) / 2 \rfloor\) 以下なので、\(\lfloor (N + K) / 2 \rfloor! / K!\) 通り以下になります。
以上より \(f(N) = \max\{\lfloor (N + K) / 2 \rfloor! / K!: 0 \le K \le N\}\) と置くと全体の計算量は \(O(Nf(N))\) となります。(ちなみに \(16 \cdot f(16) = 16 \cdot 9!/2! = 2903040\) です。)
投稿日時:
最終更新: