一直以为要求点数为 n 导致不会做
首先我们定义 (G) 表示对于一个点的树关于权值的 OGF。即 (G_i) 表示集合里存在不存在权值 (i)。定义 (F) 表示一棵无标号二叉树关于权值的 OGF,即 (F_i) 表示权值为 (i) 的二叉树的数量。
显然有:(空树的权值为0)
[F_0=1
]
[F_n = sum_{i+j+k=n}F_iG_jF_k,nge1
]
然后可以分治FFT了
进一步转化为:
[F=F^2G+1
]
其中加一是因为如果不加会违背 (F_0=1)。
然后就可以解二元一次方程了。
[F^2G-F+1=0
]
[F=frac{1 pm sqrt{1-4G}}{2G}
]
然后发现 G 没有逆元,并且加减不定,不会做。那么我们换一种方法:配方法
[(FG-1/2)^2=1/4 - G
]
[(FG-1/2)= pm sqrt{1/4-G}
]
发现到现在各方面都是合法的。不过还是加减不定。不过显然 (G_0=0),等号左边的常数项为 (-1/2),那么我们必定要求右边的常数项也是负数,因此是减不是加。即:
[FG-1/2=-sqrt{1/4-G}
]
移项:
[FG=frac{1-sqrt{1-4G}}{2}
]
发现 (G) 还是移不过去,怎么办?
神仙告诉我们,需要分母无理化:
[FG=frac{4G}{2(1+sqrt{1-4G})}
]
上面单拎出来个 (G),然后就爽了:
[(F-frac{2}{1+sqrt{1-4G}})G=0
]
(G) 必定不为0(尽管常数项是0),那么肯定是左边那项为0.即:
[F=frac{2}{1+sqrt{1-4G}}
]
然后直接求即可。需要多项式开根,多项式求逆。