PA2019 Grafy

Grafy

求有多少个 \(n\) 个顶点的有标号无向简单图,满足每个点入度、出度均为 \(2\),且无重边、自环。答案对 \(P\) 取模。

\(3\le n\le 500\)

Solution

考虑一张左部、右部均有 \(2n\) 个点的二分图,下标 \(0\sim (2n-1)\),左部表示 \(i\) 的入度,右部表示 \(i\) 的出度。

我们要计数完美匹配方案,记为排列 \(p\),其中 \(p_i\) 表示左部 \(i\) 匹配右部 \(p_i\)。一张合法的图对应 \(2^{2n}\) 个完美匹配。

不合法的排列有两种形式:

  • 自环,在排列中表现为 \(\lfloor \frac{p_{2i}}{2}\rfloor =i\)\(\lfloor \frac{p_{2i+1}}{2}\rfloor =i\)
  • 重边,在排列中表现为 $\lfloor \frac{p_{2i}}{2}\rfloor = \lfloor \frac{p_{2i+1}}{2}\rfloor $。

因此,答案容斥信息可表达为:

\[\prod\limits_{i=0}^{n-1}\left( 1- {\color{red}[p_{2i},p_{2i+1}重边]}-{\color{green}[p_{2i}自环]}-{\color{green}{[p_{2i+1}自环]}}+2\color{blue}{[p_{2i},p_{2i+1}均自环]}\right) \]

注意到绿色区域的两贡献是相同的,因此可以对称计算。

我们枚举选择 \(i\)\(\color{blue}{[p_{2i},p_{2i+1}均自环]}\)\(j\)\({\color{green}[p_{2i}自环]}\)\(\color{green}{[p_{2i+1}自环]}\)\(k\)\({\color{red}[p_{2i},p_{2i+1}重边]}\),则:

\[ans=\frac{1}{2^{2n}}\sum_{i+j+k\le n} {\color{cyan}{\binom{n}{i,j,k,n-i-j-k}2^i(-1)^{j}(-1)^k}}\cdot \color{pink}2^i \cdot 2^j 2^j\cdot (n-i-j)^{\underline{k}}2^k\cdot (2n-2i-j-2k)! \]

青色部分是容斥系数,接下来分别是四部分的贡献。化简得:

\[ans=\frac{n!}{2^{2n}}\sum_{i+j+k\le n} 2^{2i+2j+k}(-1)^{j+k}\frac{(n-i-j)!(2n-2i-j-2k)!}{i!j!k!(n-i-j-k)!^2} \]

时间复杂度 \(\mathcal O(n^3)\)

Bonus:本题存在\(\mathcal O(n)\) 的整式递推做法

posted @ 2021-10-26 15:26  wlzhouzhuan  阅读(75)  评论(0)    收藏  举报