AtCoder Beginner Contest 236 D 問題 Dance
問題
提出解答
問題の概要
二重添字整数列 が与えられる. ただし, である.
の並び替え全体の集合を とするとき,
を求めよ.
制約
解法1 (計算量の見積もり)
のペアの作り方を考える. すると, 作り方の場合の数は
であり, とすると, である. よって, 全てのペアリングの方法を効率よく生成できれば, 計算量 で求めることができる.
全てのペアリングの方法を効率よく生成する方法を考える.
解法2 (ペアリングの生成)
闇雲にペアを作ろうとすると, ペアの名付け方だけ違うペアリングの方法が複数発生してしまい, 無駄になってしまう. しかし, 次のペアに着目することにより, 重複なくペアリングの方法を生成することができる.
- まだペアができていない人のうち, 番号が最も小さい人と誰かでペアを組む.
よって, ペアを生成する際に上のようにしてペアを組むことにより, 全てのペアを無駄なく生成できる.
*1:実際には の値は与えられていない.