かしのブログ

競技プログラミングとか

AtCoder Regular Contest 054 C - 鯛焼き

問題

 N個のタイヤと N本の木の完全マッチングの個数パターン数の偶奇を求める。

atcoder.jp

考察

完全マッチングの数え上げは、01行列のpermanent値に一致し、これはNP困難であることが知られている。行列 Aのpermanent値は

 {\rm perm}(A) = \sum_{\sigma \in S_n} \prod_{i=1}^n a_{i, \sigma(i)}

ここで、 Aのdeterminant値を見てみると、

 {\rm det}(A) = \sum_{\sigma \in S_n} {\rm sgn}(\sigma)\prod_{i=1}^n a_{i, \sigma(i)}

 {\rm sgn}(\sigma) \pm 1なので、どちらも \mod 2 1なのでこれらの値は一致する。  {\rm det}(A)は上三角行列を作れば \mathcal{O}(N^3) で求められる。

実装

atcoder.jp