【bzoj4001】[TJOI2015]概率论 生成函数+导数
题目描述

输入
输入一个正整数N,代表有根树的结点数
输出
输出这棵树期望的叶子节点数。要求误差小于1e-9
样例输入
1
样例输出
1.000000000
题解
生成函数+导数
先考虑节点个数为$n$的二叉树有多少个:$c_0=1,c_i=\sum\limits_{j=0}^{i-1}c_j*c_{i-j-1}$,显然这是Catalan数。
令其生成函数为$F(x)$,由其递推式可以列出方程:$F(x)=xF(x)^2+1$,解得:
$F(x)=\frac{1-\sqrt{1-4x}}{2x}$
(此处根号前面不能取负号,因为如果取正,分子上常数项不为$0$,就会出现$\frac 1x$项,它在生成函数中是无意义的($f(0)$无意义))
然后设有$i$个节点的二叉树的期望叶子节点个数为$p_i$,那么$p_i=\frac{\sum\limits_{j=0}^{i-1}c_jc_{i-j-1}(p_j+p_{i-j-1})}{c_i}$。
设$t_i=c_ip_i$,那么就有$t_1=1,t_i=\sum\limits_{j=0}^{i-1}(c_jt_{i-j-1}+c_{i-j-1}t_j)=2\sum\limits_{j=0}^{i-1}c_jt_{i-j-1}$。
于是再令$t$的生成函数为$G(x)$,那么有$G(x)=2xF(x)G(x)+x$,解出:
$G(x)=\frac x{\sqrt{1-4x}}$
接下来是戏剧性的一幕:
$(xF(x))'=\frac 1{\sqrt{1-4x}}=\frac{G(x)}x$
这说明F与G的每一项都是有联系的。考虑$xF(x)$的每一项:$x·c_nx^n=c_nx^{n+1}$,求导之后变为$(n+1)c_nx^n$,而等式右端对应的项为$\frac{t_{n+1}x^{n+1}}x=t_{n+1}x^n$,因此说明$t_{n+1}=(n+1)c_n$,即:
$t_n=nc_{n-1}$
又因为$t_n=c_np_n$,所以有:
$p_n=\frac{nc_{n-1}}{c_n}$
而又因为$c$为卡特兰数,因此$c_n=\frac{C_{2n}^n}{n+1}$。所以把式子带进去,就可以推出:
$p_n=\frac{n(n+1)}{2(2n-1)}$
貌似本题如果在考场上的话直接打表都能推出结论吧。。。
代码还要看吗?。。。
#include <cstdio>
int main()
{
double n;
scanf("%lf" , &n);
printf("%.9lf\n" , n * (n + 1) / (2 * n - 1) / 2);
return 0;
}
【bzoj4001】[TJOI2015]概率论 生成函数+导数的更多相关文章
- bzoj4001: [TJOI2015]概率论
题目链接 bzoj4001: [TJOI2015]概率论 题解 生成函数+求导 设\(g(n)\)表示有\(n\)个节点的二叉树的个数,\(g(0) = 1\) 设\(f(x)\)表示\(n\)个节点 ...
- 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). 类 ...
- 2018.12.31 bzoj4001: [TJOI2015]概率论(生成函数)
传送门 生成函数好题. 题意简述:求nnn个点的树的叶子数期望值. 思路: 考虑fnf_nfn表示nnn个节点的树的数量. 所以有递推式f0=1,fn=∑i=0n−1fifn−1−i(n>0) ...
- BZOJ4001 [TJOI2015]概率论 【生成函数】
题目链接 BZOJ4001 题解 Miskcoo 太神了,orz #include<algorithm> #include<iostream> #include<cstr ...
- BZOJ4001[TJOI2015]概率论——卡特兰数
题目描述 输入 输入一个正整数N,代表有根树的结点数 输出 输出这棵树期望的叶子节点数.要求误差小于1e-9 样例输入 1 样例输出 1.000000000 提示 1<=N<=10^9 设 ...
- BZOJ4001:[TJOI2015]概率论(卡特兰数,概率期望)
Description Input 输入一个正整数N,代表有根树的结点数 Output 输出这棵树期望的叶子节点数.要求误差小于1e-9 Sample Input 1 Sample Output 1. ...
- 【BZOJ4001】[TJOI2015]概率论(生成函数)
[BZOJ4001][TJOI2015]概率论(生成函数) 题面 BZOJ 洛谷 题解 这题好仙啊.... 设\(g_n\)表示\(n\)个点的二叉树个数,\(f_n\)表示\(n\)个点的二叉树的叶 ...
- 4001: [TJOI2015]概率论
4001: [TJOI2015]概率论 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 262 Solved: 108[Submit][Status] ...
- [TJOI2015]概率论
[TJOI2015]概率论 史上最短黑题 看起来一脸懵逼,没有取模,1e-9 根据期望定义,发现 分母是一个卡特兰数,,,,不能直接算 所以考虑怎么消掉一些东西 gn表示n个点的叶子个数和,fn表示n ...
随机推荐
- react手动搭建解析
1.创建项目名<react-progect> ->项目文件下创建package.json文件 ->项目下执行命令:cnpm initcnpm i webpack webpack ...
- Open closed principle
#include <iostream> using namespace std; class Book { public: string getContents() { return &q ...
- Thymeleaf显示Map集合数据
<select class="form-control zz-set-input-size" id="channel"> <option va ...
- centos 7忘记了root密码,如何改密码?
今天服务器突然进不去了,不知道是密码被改了,还是什么情况! 服务器版本:centos 7.0 网上查找了很多文档,有些办法不可行,如果是亲自试过绝对可行的方法: 1:重启服务器,如下界面,按键盘 &q ...
- 采坑笔记——mysql的order by和limit排序问题
背景说明 今天写出一个十分弱智的bug,记录一下,提醒自己以后别这种犯错,不怕丢人哈~ 在写一个分页查询记录的sql时,要根据添加的时间逆序分页输出,之前的写法是酱紫 select record.a, ...
- 怎么退出jQuery的each函数
返回 'false' 将停止循环 (就像在普通的循环中使用 'break').返回 'true' 跳至下一个循环(就像在普通的循环中使用'continue'). 以下举例如何退出 each 函数和退出 ...
- linux防火墙的管理和策略控制
iptables 一:IPtables防火墙的简介 IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统.如果 Linux 系统连接到因特网或 LAN.服务器或连接 ...
- java-访问控制修饰符
访问权限 public 任何情况都可以访问 默认包 本包范围内可以访问到 protect 同一个包里的所有类所可以访问:所有子类(子类可以不和父类在同一个包)都可以访问 privat ...
- 无法打开物理文件 XXX.mdf“,操作系统错误 5:”5(拒绝访问。)"的解决办法
http://blog.csdn.net/blackfield/article/details/6550499 用T-SQL命令附加数据库时,出现如下异常信息: 无法打开物理文件 XXX.mdf&qu ...
- laravel环境配置的常见问题
从开始下载相关软件到现在,整整一天,终于成功了.不得不说官方的说明文档相当详细,毕竟我都成功了,不是吗,哈哈. 好了,不多说了,直接上干货 官方环境配置文档地址:https://laravel-chi ...