题目链接

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;
}

bzoj4001: [TJOI2015]概率论的更多相关文章

  1. BZOJ4001 TJOI2015概率论(生成函数+卡特兰数)

    设f(n)为n个节点的二叉树个数,g(n)为n个节点的二叉树的叶子数量之和.则答案为g(n)/f(n). 显然f(n)为卡特兰数.有递推式f(n)=Σf(i)f(n-i-1) (i=0~n-1). 类 ...

  2. BZOJ4001 [TJOI2015]概率论 【生成函数】

    题目链接 BZOJ4001 题解 Miskcoo 太神了,orz #include<algorithm> #include<iostream> #include<cstr ...

  3. BZOJ4001[TJOI2015]概率论——卡特兰数

    题目描述 输入 输入一个正整数N,代表有根树的结点数 输出 输出这棵树期望的叶子节点数.要求误差小于1e-9 样例输入 1 样例输出 1.000000000 提示 1<=N<=10^9 设 ...

  4. 2018.12.31 bzoj4001: [TJOI2015]概率论(生成函数)

    传送门 生成函数好题. 题意简述:求nnn个点的树的叶子数期望值. 思路: 考虑fnf_nfn​表示nnn个节点的树的数量. 所以有递推式f0=1,fn=∑i=0n−1fifn−1−i(n>0) ...

  5. BZOJ4001:[TJOI2015]概率论(卡特兰数,概率期望)

    Description Input 输入一个正整数N,代表有根树的结点数 Output 输出这棵树期望的叶子节点数.要求误差小于1e-9 Sample Input 1 Sample Output 1. ...

  6. 【BZOJ4001】[TJOI2015]概率论(生成函数)

    [BZOJ4001][TJOI2015]概率论(生成函数) 题面 BZOJ 洛谷 题解 这题好仙啊.... 设\(g_n\)表示\(n\)个点的二叉树个数,\(f_n\)表示\(n\)个点的二叉树的叶 ...

  7. 4001: [TJOI2015]概率论

    4001: [TJOI2015]概率论 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 262  Solved: 108[Submit][Status] ...

  8. [TJOI2015]概率论

    [TJOI2015]概率论 史上最短黑题 看起来一脸懵逼,没有取模,1e-9 根据期望定义,发现 分母是一个卡特兰数,,,,不能直接算 所以考虑怎么消掉一些东西 gn表示n个点的叶子个数和,fn表示n ...

  9. 【BZOJ4001】【Luogu P3978】 [TJOI2015]概率论

    题目描述: Description: Input 输入一个正整数N,代表有根树的结点数 Output 输出这棵树期望的叶子节点数.要求误差小于1e-9 Sample Input 1 Sample Ou ...

随机推荐

  1. python---django中序列化

    def get_data(req): ret = {'status':True,'data':None} try: user_list = models.User.objects.all() ret[ ...

  2. 《翻译》PEP 380 – 委托子生成器语法

     PEP 380 – 委托子生成器语法 翻译自: https://www.python.org/dev/peps/pep-0380/ 摘要 一项新的语法被提出了:生成器委托其部分操作给另一个生成器.委 ...

  3. VMware Linux 下 Nginx 安装配置 (一)

    资源准备 1. pcre-8.34.tar.gz: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 2. zlib-1.2.8.tar.g ...

  4. 第10月第13天 xcode ipa

    1. xcodebuild -exportArchive -exportFormat ipa -archivePath RongChatRoomDemo\ 17-7-13\ 下午4.04.xcarch ...

  5. 第10月第5天 v8

    1. brew install v8 http://www.cnblogs.com/tinyjian/archive/2017/01/17/6294352.html http://blog.csdn. ...

  6. grep和sed匹配多个字符关键字的用法

    GNU sed和UNIX sed 写法不一样 匹配多个关键词,打印出匹配的行,效果类似于 grep grep hello\|world file > output 或者用扩展正则 grep -E ...

  7. pandas删除dataframe列

    data2 = data.drop(data.columns[0,1,3,4,6,8,10], 1)

  8. (mysql)触发器、事件、事务、函数

    1.事务操作原理:事务开启之后Start transaction,所有的操作都会临时保存到事务日志.只有在得到commit才会关闭,否则清空:2.设置回滚点: savepoint 回滚点名字:  回到 ...

  9. window10 显示QQ图标

  10. 织梦任意页面调用{dede:field.content/}的方法

    过滤掉所有的html代码,只显示文字,具体的ID自己更改. 代码如下: {dede:sql sql='Select content from dede_arctype where id=1'} [fi ...