【loj 6363】地底蔷薇【拉格朗日反演】【生成函数】

Description

给定集合 \(S\),请你求出 \(n\) 个点的「所有极大点双连通分量的大小都在 \(S\) 内」的不同简单无向连通图的个数对 \(998244353\) 取模的结果。\(n,\sum_{x\in S}x\leq 10^5\)

传送门

Solution

首先求出\(G(x)\)\(n\)个点组成的无向连通图个数的\(EGF\),这个是\(trival\)的。

然后,我们对每个图钦定一个根,于是得到\(n\)个点组成的有根无向连通图个数的\(EGF\)\(H(x)\)满足\(h_i=ig_i\)

考虑在这张图上将根以及和它相连的所有边断掉,那么原图会变成若干连通块,每个连通块中都一定有一些点与根构成点双,这样的点双显然不会包含其它连通块中的点。我们再把这样的点双中的所有边断掉,那么原连通块变成了以这些点双中的点为根的若干不相交的连通块。枚举原连通块中有多少个点与根组成了点双,得到该连通块的贡献为:

\[\sum_{k\ge 1}\frac{t_k}{k!}H(x)^k \]

其中\(t_i\)表示大小为\(i+1\)的点双的个数。设\(T(x)\)\(t_i\)\(EGF\),那么连通块的贡献就相当于\(T(H(x))\)

同时原图相当于是由这样若干个性质相似连通块组成一个连通图再添上一个点作为根,根据\(EGF\)的性质,我们有:

\[H(x)=xe^{T(H(x))} \]

于是:

\[T(H(x))=\ln\frac{H(x)}{x} \]

\(H(x)\)已知,那么我们可以通过扩展拉格朗日反演\(\mathcal O(nlog(n))\)求出\([x^n]T(x)\)

回到原问题,对这个图将根以及和它相连的所有边断掉,那么只要得到的每一个小连通块也是符合条件的连通图并且与根相连的那些点双大小\(\in S\),这个图就合法。因此,设原问题的\(EGF\)\(F(x)\),有:

\[F(x)=xe^{R(F(x))} \]

其中\(R(x)=\sum_{k\ge 1}[k+1\in S]\frac{t_k}{k!}x^k\),其中需要的所有系数\(t_i\)可以用\(\mathcal O(\sum _{x\in S}xlog(x))\)的复杂度求出。

于是

\[\frac{F(x)}{e^{R(F(x))}}=x \]

​ 令

\[P(x)=\frac{x}{e^{R(x)}} \]

那么\(P(F(x))=x\),直接拉格朗日反演即可。

需要注意求出的是有根图的答案,还有再除一个\(n\)

总复杂度\(\mathcal O(nlog(n)+\sum_{x\in S}xlog(x))\)

Code

posted @ 2021-03-09 23:07  cjTQX  阅读(41)  评论(0编辑  收藏  举报