Loading

ABC327G

ABC327G

虽然是自己做出来的,但是花的时间堪忧。

题意

直接说化简后的。

求有多少个 $N$ 个点 $M$ 条边的有标号的无向图,满足其中没有奇环。

$N\le 30,M\le 10^9$。

Sol

先不考虑重边,那么就是问对于每个连通块都是一个二分图的方案数。此时需要处理这样一个子问题:给定 $n$ 个点和 $m$ 条边有多少种有标号联通二分图的方案。

设 $f_{n,m}$ 表示 $n$ 个点 $m$ 条边黑白染过色(不一定要联通)的二分图个数。有$$ f_{n,m}=\sum_{i=0}^n \binom{n}{i}\binom{i(n-i)}{m} $$ 之后容斥可以得到 $g_{n,m}$ 表示黑白染过色的联通二分图个数。$$ g_{n,m}=\sum_{i=1}^{n-1}\sum_{j=0}^m\binom{n-1}{i-1}g_{i,j}f_{n-i,m-j} $$ 由于这是二分染色之后的答案,所以上述子问题的答案就应该是 $\dfrac{g_{n,m}}{2}$。

考虑枚举所有连通块的大小,那么直接背包可以求出来这一种拆分方式用 $x$ 条边的方案数。这个 $x$ 不会很大,因为 $n$ 个点的二分图最多边数只有 $\lfloor \dfrac{n}{2}\rfloor \times \lceil \dfrac{n}{2}\rceil$ 种。之后对于每一个连通块需要分配点,为了避免算重可以把相同大小的连通块拿出来一起算(具体就是对于每一种大小的连通块分别枚举每一个的方案,枚举的时候钦定这一种大小的连通块分配到的最小的点在当前这个连通块中)。最后乘上这个系数即可。

如此可以算出来没有重边的情况下,用了 $m$ 条边的满足要求图的个数。最后考虑重边,显然重边只能和 $m$ 条边相同。相当于用恰好 $m$ 个元素填满 $M$ 个位置的方案数,简单二项式反演一下即可。

预处理 $\mathcal{O}(n^6)$。 注意到 $30$ 的拆分方式并不多(大约 $6000$ 种),枚举 + 背包的时候卡着连通块最多能拥有边数的上限,实际怕跑计算 $4\times 10^6$ 不到。

ATC 提交记录

posted @ 2023-11-15 16:21  Jryno1  阅读(13)  评论(0)    收藏  举报  来源