n<=1.3e5的无向简单连通图个数。mod 1004535809。
听说是很多人的多年坑。。?还好我见识少
首先用容斥递推,$f(i)$表示$i$个点答案。如果不考虑连通就是$2^{\frac{i(i-1)}{2}}$,然后枚举所有不连通的情况(我就不会了)。
枚举最后一个点所在集合大小$j$,我需要在剩下$i-1$个点里面挑$j-1$个来陪他,然后这坨点联通的方案就$f(j)$,其他点乱连,就$2^{\frac{(i-j)(i-j-1)}{2}}$。
好!$f(i)=2^{\frac{i(i-1)}{2}}-\sum_{j=1}^{i-1}C_{i-1}^{j-1}f(j)2^{\frac{(i-j)(i-j-1)}{2}}$。
C拆掉,$f(i)=2^{\frac{i(i-1)}{2}}-\sum_{j=1}^{i-1}\frac{f(j)(i-1)!2^{\frac{(i-j)(i-j-1)}{2}}}{(j-1)!(i-j)!}$
按照套路,两边除$(i-1)!$,$\frac{f(i)}{(i-1)!}=\frac{2^{\frac{i(i-1)}{2}}}{(i-1)!}-\sum_{j=1}^{i-1}\frac{f(j)2^{\frac{(i-j)(i-j-1)}{2}}}{(j-1)!(i-j)!}$
有相似的形式,很好!!!令$g(i)=\frac{f(i)}{(i-1)!}$,其中$g(0)=0$,$h(i)=\frac{2^{\frac{i(i-1)}{2}}}{i!}$,其中$h(0)=0$,$s(i)=\frac{2^{\frac{i(i-1)}{2}}}{(i-1)!}$,其中$s(0)=0$。
搞出他们三人的生成函数,可知$g=s-g*h$,得$g=\frac{s}{1+h}$,好!多项式求逆再乘一次。
1 //#include2 #include 3 #include 4 #include 5 //#include