Link
Description
有长为 (n) 的正整数数列 ({c_n}) ,且 (c_n) 互异。现需构造一棵二叉树,点权均为 ({c_n}) 中的数。给定 (m),对于每个正整数 (kleq m),求点权和为 (k) 的二叉树个数。
Solution
容易想到先搞个递推式,然后再化简。令 (f_i) 表示权值和为 (i) 的二叉树个数,(f_0=1),其 OGF 为 (F(x)),那么对于 (mgeq 1),有
[egin{align}
f_m&=sum_{i=1}^n sum_{j=0}^{m-a_i} f_j imes f_{m-a_i-j} \
&=sum_{i=1}^n [x^{m-a_i}] F^2(x) \
&=[x^m] F^2(x) sum_{i=1}^n x^{a_i}\
end{align}
]
令 (G(x)=sum_{i=1}^n x_{a_i}),(f_m=[x^m]G(x)F^2(x)),又 (f_0=1),那么
[F(x)=1+G(x)F^2(x)
]
解得两个根
[F_1=frac{1+sqrt{1-4G}}{2G},F_2=frac{1-sqrt{1-4G}}{2G}
]
又要满足初始值 (f_0=1),即 (F) 泰勒展开第零项,那么
[lim_{x o 0} F(x)=1
]
发现只有 (F_2) 符合条件,那么 (F=frac{1-sqrt{1-4G}}{2G})
但是 (G(x)) 中 (g_0 eq 1),不存在逆。于是有一个很神奇的方法,即分母无理化。
[F=frac{1-sqrt{1-4G}}{2G}=frac{2}{1+sqrt{1-4G}}
]
于是就可以求了。