P5900 无标号无根树计数
无根树计数比较困难,我们考虑fi表示i个点的有根树的个数
F(x)=∑i=1fixi
那么,根据Euler变换
F(x)=xε(F(x))
F(x)F′(x)xF′(x)G(x)F′(x)F′(xj)xji=1∑gixignxF′(x)xF′(x)nfnfn=xε(F(x))=(xexp(j=1∑jF(xj)))′=exp(j=1∑jF(xj))+xexp(j=1∑jF(xj))j=1∑F′(xj)xj−1=F(x)+F(x)j=1∑F′(xj)xj=j=1∑F′(xj)xj=i=1∑gixi=i=1∑ifixi−1=i=1∑ifixj(i−1)xj=i=1∑ifixij=i=1∑ifixij=d∣n∑dfd=F(x)+F(x)G(x)=i=1∑ifixi=fn+k=1∑n−1fkgn−k=n−11i=1∑n−1fign−i
可以分治FFT解决求出fi
考虑如何计算无根树的个数
对于奇数的n,每颗树只有一个重心,那么把根当做重心,即为所有的无根树
fn−∑i=2n+1fifn−i
对于偶数的n,可能存在两个重心,还需减掉(2f2n)
如果两个大小为2n,同构,则只会被计算一次,如果不同构,则会被计算两次
P3784 [SDOI2017] 遗忘的集合