[洛谷P3978][TJOI2015]概率论

题目大意:对于一棵随机生成的$n$个结点的有根二叉树,所有不同构的形态等概率出现(这里同构当且仅当两棵二叉树根相同,并且相同节点的左儿子和右儿子都相同),求叶子节点个数的期望是多少?

题解:令$f_n$表示$n$个节点的二叉树的个数,$g_n$表示这$f_n$棵二叉树的叶子节点个数和。

打(ti)表(jie)发现:$g_n=n f_{n-1}$

证明:而每棵$n-1$个点的二叉树恰好有$n$个位置可以悬挂一个新的叶子,所以每棵$n-1$个点的二叉树被扩展了$n$次。发现会算重复,但是对于一个有$k$个叶子节点的二叉树,就会被重算$k+1$次,刚好就是叶子节点的个数,所以$g_n=n f_{n-1}$
$$
dfrac{g_n}{f_n}=dfrac{nf_{n-1}}{f_n}\
egin{align*}
f_n&=sumlimits_{i=0}^{n-1}f_if_{n-i-1}\
&=dfrac{inom{2n}n}{n+1}\
&(即卡特兰数)\
end{align*}\
g_n=dfrac{n(n+1)}{2(2n-1)}
$$


更正常的生成函数证明方法

卡点:未开$long;long$

C++ Code:

#include <cstdio>
long long n;
int main(){
    scanf("%lld", &n);
    printf("%.10lf
", n * (n + 1) / 2.0 / (2.0 * n - 1.0));
    return 0;
}

  

原文地址:https://www.cnblogs.com/Memory-of-winter/p/9712977.html