CF438E The Child and Binary Tree

题目链接

一直以为要求点数为 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}} ]

然后直接求即可。需要多项式开根,多项式求逆。

原文地址:https://www.cnblogs.com/JiaZP/p/13503814.html