【洛谷P3978】概率论

题目

题目链接:https://www.luogu.com.cn/problem/P3978
求一棵随机生成的 \(n\) 个结点的有根二叉树期望的叶子节点数。

思路

白嫖一道黑。
完全照搬rqy大爷的题解
对于一棵\(n\)个节点的二叉树,每一个节点可以往下连两条边,所以总共可以往下连\(2n\)条边;而这棵二叉树已经有\(n-1\)条边了,在\(2n-(n-1)=n+1\)条边中选择一条边连出去都可以形成一棵\(n+1\)个节点的二叉树,且连出去这条边所连接的节点为叶节点,所以一棵有\(n+1\)个节点的二叉树的叶节点个数为\(n\)个节点的二叉树个数\(\times n\)
而我们知道,大小为\(n\)的二叉树的个数就是卡特兰数的第\(n\)项。所以\(n\)个节点的二叉树的叶子结点数为

\[(n-1)\times \frac{C^{n-1}_{2(n-1)}}{n} \]

所以一棵\(n\)个节点的叶子期望个数为

\[\frac{(n-1)\times \frac{C^{n-1}_{2(n-1)}}{n}}{C^n_{2n}}=\frac{a(a-1)}{4a-2} \]

代码

#include <cstdio>
using namespace std;

long long a;

int main()
{
	scanf("%lld",&a);
	printf("%0.10lf",1.0*a*(a+1)/(4*a-2));
	return 0;
}

\[\color{white}{\text{stO rqy Orz}} \]

posted @ 2020-01-22 17:07  stoorz  阅读(153)  评论(0编辑  收藏  举报