[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=2sum_{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));
}

原文地址:https://www.cnblogs.com/mollnn/p/13657461.html