题目链接

bzoj4001: [TJOI2015]概率论

题解

生成函数+求导

设\(g(n)\)表示有\(n\)个节点的二叉树的个数,\(g(0) = 1\)

设\(f(x)\)表示\(n\)个节点的二叉树叶子节点的个数,\(f_0 = 0,f_1 = 1\)

那么\(ans = \frac{f_i}{g_i}\)

对于\(g_i\)

考虑有一颗\(n\)个点的二叉树,由于左右字数都是二叉树,枚举左右子树的点数

\[g_n = \sum_{i = 0}^{n - 1}g_ig_{n - i - 1}
\]

这就是卡特兰数,通项为\(\frac{C_{2n}^{n}}{n + 1}\)

对于\(f_i\)

枚举左右子树的大小,我们可以有\(g\)函数推出,由于左右对称,最后\(*2\)

\[f_n = 2\sum_{i = 0}^{n - 1}f_i*g_{n - i - 1}
\]

我们要找到\(f\)与\(h\)的关系

另\(G(x)\)为\(g\)的生成函数,\(F(x)\)为\(f\)的生成函数

\[G(x) = x G^2(x) + 1,F(x) = 2xF(x)G(x) + x
\]

对于\(G(x)\)他的封闭形式为\(\frac{1-\sqrt{1-4x}}{2x}\),(对于另外一根\(\sqrt{1-4x}\)展开后每一项都是是负的,而卡特兰数不是,舍去)

对\(F(x)\)得到\(F(x) = x * (1 - 4x)^{-\frac{1}{2}}\)

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

\(xG(x)\)的每一项\(xg_nx^n = g_nx^{n +1}\)求导后变为\((n + 1)g_nx^n\),也就等于等式右边的\(\frac{f_{n + 1}x^{n + 1}}{x} = f_{n + 1}x^n\) 也就是说\(f_{n + 1} = (n+1)g_n\)即\(f_n=ng_{n-1}\)

带入\(g_n =\frac{C_{2n}^{n}}{n + 1}\)

化简得到

\[ans =\frac{n(n + 1)}{2(2n + 1)}
\]

代码

#include<bits/stdc++.h>
using namespace std;
inline int read() {
int x = 0,f = 1;
char c = getchar();
while(c < '0' || c > '9')c = getchar();
while(c <= '9' && c >= '0')x = x * 10 + c - '0',c = getchar();
return x * f;
}
const int maxn = 1000005;
const int INF = 0x7fffffff; int main() {
double n;
cin >> n;
printf("%.9lf\n",n * (n + 1.0) / (4 * n -2));
return 0;
}

最新文章

  1. ios-将代码创建的视图控件放入拖拽控件的下面
  2. weblogic应用平台常见问题小结
  3. http 303 307 302 状态码理解
  4. React组件二
  5. 【HDU1875】畅通工程再续(MST基础题)
  6. mac中使用终端生成RSA私钥和公钥文件
  7. wp8数据存储--独立存储文件 【转】
  8. 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)
  9. HTML meta refresh 刷新与跳转(重定向)页面
  10. openssl几个加密算法使用介绍
  11. NHibernate与IbatisNet的简单比较
  12. ssh远程登陆
  13. Java进阶(三十九)Java集合类的排序,查找,替换操作
  14. 2015/12/24:嵌入式C语言的位操作随笔
  15. 运营商挂时长神器,批量导入账号,导出账号状态,随机修改MAC地址
  16. JEECG 上传插件升级-代码生成器
  17. 41 【docker】初识
  18. linux的system () 函数详解
  19. Stateful Kubernetes Applications Made Easier: PSO and FlashBlade
  20. sql server 给表加说明,给列/字段加说明

热门文章

  1. scrapy 让指定的spider执行指定的pipeline
  2. 【DS】排序算法之快速排序(Quick Sort)
  3. python学习笔记6--双色球需求实现
  4. JAVA多线程之线程的挂起与恢复(suspend方法与resume方法)
  5. shape-outside 矩形之外的另一种思路
  6. ocky勒索软件恶意样本分析1
  7. C# Json To Object 无废话
  8. 接收二进制流(ArrayBuffer) ,并且显示二进制流图片
  9. 探秘Java类加载
  10. python enumrate使用