[TJOI2015]概率论

description

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

data range

\[n\le 10^9\]

solution

考虑\(期望=\frac{权值总和}{总方案数}=\frac{f_n}{g_n}\)
推导\(f_i,g_i\)可得
\[f_i=2\sum_{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}\binom{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}\binom{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}\binom{2i}{i}x^i\]

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

最后答案为
\[\frac{f_n}{g_n}=\frac{\binom{2n-2}{n-1}}{\frac{1}{n+1}\binom{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\n",1.0*(n+1)*n/2/(2*n-1));
  return 0;
}

猜你喜欢

转载自www.cnblogs.com/cjfdf/p/10148138.html