[TJOI2015]概率论

description

Luogu
BZOJ
(n)个节点二叉树的叶子节点个数期望。

data range

[nle 10^9 ]

solution

考虑(期望=frac{权值总和}{总方案数}=frac{f_n}{g_n})
推导(f_i,g_i)可得

[f_i=2sum_{j=0}^{i-1}f_jg_{i-j-1} ]

[g_i=sum_{j=0}^{i-1}g_jg_{i-j-1} ]

考虑其生成函数(F(x),G(x)),则

[F(x)=2F(x)G(x)x+x ]

[G(x)=G^2(x)+1 ]

于是有

[G(x)=frac{1-sqrt{1-4x}}{2x} ]

[F(x)=frac{x}{sqrt{1-4x}} ]

可以知道(g_i)就是卡特兰数。

((1-4x)^{frac{1}{2}})((1-4x)^{-frac{1}{2}})暴力泰勒展开得

[(1-4x)^{frac{1}{2}}=1-sum_{i=1}^{infty}frac{(2i-3)!!2^i}{i!}x^i=1-sum_{i=1}^{infty}frac{2}{i}inom{2i-2}{i-2}x^i ]

[(1-4x)^{-frac{1}{2}}=1+sum_{i=1}^{infty}frac{(2i-1)!!2^i}{i!}x^i=1+sum_{i=1}^{infty}frac{2}{i}inom{2i}{i}x^i ]

其中(n!!)表示(n(n-2)(n-4)(n-6)...(1+[n\%2=1])),即(n)的双阶乘。
于是我们可以得到

[G(x)=sum_{i=0}^{infty}frac{1}{i+1}inom{2i}{i}x^i ]

[F(x)=sum_{i=0}^{infty}inom{2i-2}{i-1}x^i ]

最后答案为

[frac{f_n}{g_n}=frac{inom{2n-2}{n-1}}{frac{1}{n+1}inom{2n}{n}}=frac{n(n+1)}{2(2n-1)} ]

Code

#include<bits/stdc++.h>
using namespace std;
int main()
{
  int n;scanf("%d",&n);
  printf("%.9lf
",1.0*(n+1)*n/2/(2*n-1));
  return 0;
}
原文地址:https://www.cnblogs.com/cjfdf/p/10148138.html