其他分享
首页 > 其他分享> > [TJOI2015] 概率论 - 组合数学

[TJOI2015] 概率论 - 组合数学

作者:互联网

Description

求 \(n \le 10^9\) 个节点的二叉树的叶子节点数期望。

Solution

设 \(f_i\) 表示 \(i\) 阶二叉树本质不同个数,\(g_i\) 表示所有本质不同 \(i\) 阶二叉树的树叶个数的和,则有

\[f_i = \sum_{j=0}^{i-1} f_jf_{i-j-1}, \quad g_i=2\sum_{j=0}^{i-1} f_j g_{i-j-1} \]

显然 \(f_i\) 是卡特兰数数列,有

\[f_n=\frac {C_{2n}^n} {n+1} =\frac {4n-2} {n+1} f_{n-1} \]

然而 \(g_i\) 不好处理,下面我们证明 \(g_n=nf_{n-1}\)。

对于 \(n\) 阶二叉树,设有 \(k\) 个叶子,分别删去得到 \(k\) 棵 \(n-1\) 阶二叉树。而每个 \(n-1\) 阶二叉树有 \(n\) 个位置可以悬挂新的叶子,这种添加方式唯一对应了一种删除操作,而删除操作的总数就是所有叶子的个数总和。因此,叶子个数的总和为 \(nf_{n-1}\)。

于是有

\[\frac {g_n} {f_n} = \frac {nf_{n-1}} {f_n} =\frac {n(n+1)}{4n-2} \]

#include <bits/stdc++.h>
using namespace std;

signed main()
{
    double n;
    cin>>n;
    printf("%.10lf",n*(n+1)/(4*n-2));
}

标签:frac,sum,个数,nf,叶子,数学,二叉树,TJOI2015,概率论
来源: https://www.cnblogs.com/mollnn/p/13657461.html