luogu3978 [TJOI2015]概率论
题目链接:洛谷
题目大意:求所有$n$个点的有根二叉树的叶子节点数总和/$n$个点的有根二叉树的个数。
数据范围:$n\leq 10^9$
生成函数神题!!!!(我只是来水博客的)
首先$n$个点的有根二叉树的个数就是卡特兰数,我们考虑求分子。
设卡特兰数$g_i=\frac{C_{2n}^n}{n+1}$,分子是$f_i$则
$$f_n=2*\sum_{i=0}^{n-1}g_i*f_{n-i-1}(n\geq 2)$$
$$g_n=\sum_{i=0}^{n-1}g_i*g_{n-i-1}(n\geq 2)$$
$$f_0=0,f_1=g_0=g_1=1$$
设$f_i$和$g_i$的生成函数分别为$F(x),G(x)$则
$$G(x)=xG(x)^2+x$$
$$F(x)=2xF(x)G(x)+x$$
先解得
$$G(x)=\frac{1\pm\sqrt{1-4x}}{2x}$$
注意这里要用到一个技巧,就是当发现解出来有两个解的时候,我们可以代入特殊值。
我们发现$1=g_0=G(0)=\lim\limits_{x\rightarrow 0}\frac{1\pm\sqrt{1-4x}}{2x}$所以
$$G(x)=\frac{1-\sqrt{1-4x}}{2x}$$
代入第一个式子就可以得出
$$F(x)=\frac{x}{\sqrt{1-4x}}$$
因为我们知道$g_n$的通项公式,所以我们可以用生成函数来推出$f_n$
凑一下就知道是
$$(xG(x))'=(\frac{1-(1-4x)^{\frac{1}{2}}}{2})'=\frac{1}{\sqrt{1-4x}}=\frac{F(x)}{x}$$
然后就发现$G(x)$的其中一项$g_ix^i$经过运算后贡献到了$(i+1)g_ix^i$,$f_{i+1}x^{i+1}$贡献到了$f_{i+1}x^i$
所以$f_n=ng_{n-1}=C_{2n-2}^{n-1}$
所以
$$Ans=\frac{f_n}{g_n}=\frac{C_{2n-2}^{n-1}*(n+1)}{C_{2n}^n}=\frac{n(n+1)}{2(2n-1)}$$
(然后你就做完了别人打表做出来的东西)
不放代码了,这个只有8行。