luogu3978 [TJOI2015]概率论
题目链接:洛谷
题目大意:求所有$n$个点的有根二叉树的叶子节点数总和/$n$个点的有根二叉树的个数。
数据范围:$n\leq 10^9$
生成函数神题!!!!(我只是来水博客的)
首先$n$个点的有根二叉树的个数就是卡特兰数,我们考虑求分子。
设卡特兰数$g_i=\frac{C_{2n}^n}{n+1}$,分子是$f_i$则
$$f_n=2*\sum_{i=0}^{n-1}g_i*f_{n-i-1}(n\geq 2)$$
$$g_n=\sum_{i=0}^{n-1}g_i*g_{n-i-1}(n\geq 2)$$
$$f_0=0,f_1=g_0=g_1=1$$
设$f_i$和$g_i$的生成函数分别为$F(x),G(x)$则
$$G(x)=xG(x)^2+x$$
$$F(x)=2xF(x)G(x)+x$$
先解得
$$G(x)=\frac{1\pm\sqrt{1-4x}}{2x}$$
注意这里要用到一个技巧,就是当发现解出来有两个解的时候,我们可以代入特殊值。
我们发现$1=g_0=G(0)=\lim\limits_{x\rightarrow 0}\frac{1\pm\sqrt{1-4x}}{2x}$所以
$$G(x)=\frac{1-\sqrt{1-4x}}{2x}$$
代入第一个式子就可以得出
$$F(x)=\frac{x}{\sqrt{1-4x}}$$
因为我们知道$g_n$的通项公式,所以我们可以用生成函数来推出$f_n$
凑一下就知道是
$$(xG(x))'=(\frac{1-(1-4x)^{\frac{1}{2}}}{2})'=\frac{1}{\sqrt{1-4x}}=\frac{F(x)}{x}$$
然后就发现$G(x)$的其中一项$g_ix^i$经过运算后贡献到了$(i+1)g_ix^i$,$f_{i+1}x^{i+1}$贡献到了$f_{i+1}x^i$
所以$f_n=ng_{n-1}=C_{2n-2}^{n-1}$
所以
$$Ans=\frac{f_n}{g_n}=\frac{C_{2n-2}^{n-1}*(n+1)}{C_{2n}^n}=\frac{n(n+1)}{2(2n-1)}$$
(然后你就做完了别人打表做出来的东西)
不放代码了,这个只有8行。
luogu3978 [TJOI2015]概率论的更多相关文章
- 4001: [TJOI2015]概率论
4001: [TJOI2015]概率论 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 262 Solved: 108[Submit][Status] ...
- 【BZOJ4001】[TJOI2015]概率论(生成函数)
[BZOJ4001][TJOI2015]概率论(生成函数) 题面 BZOJ 洛谷 题解 这题好仙啊.... 设\(g_n\)表示\(n\)个点的二叉树个数,\(f_n\)表示\(n\)个点的二叉树的叶 ...
- [TJOI2015]概率论
[TJOI2015]概率论 史上最短黑题 看起来一脸懵逼,没有取模,1e-9 根据期望定义,发现 分母是一个卡特兰数,,,,不能直接算 所以考虑怎么消掉一些东西 gn表示n个点的叶子个数和,fn表示n ...
- bzoj4001: [TJOI2015]概率论
题目链接 bzoj4001: [TJOI2015]概率论 题解 生成函数+求导 设\(g(n)\)表示有\(n\)个节点的二叉树的个数,\(g(0) = 1\) 设\(f(x)\)表示\(n\)个节点 ...
- P3978 [TJOI2015]概率论
\(\color{#0066ff}{ 题目描述 }\) 为了提高智商,ZJY开始学习概率论.有一天,她想到了这样一个问题:对于一棵随机生成的n个结点的有根二叉树(所有互相不同构的形态等概率出现),它的 ...
- 【BZOJ4001】【Luogu P3978】 [TJOI2015]概率论
题目描述: Description: Input 输入一个正整数N,代表有根树的结点数 Output 输出这棵树期望的叶子节点数.要求误差小于1e-9 Sample Input 1 Sample Ou ...
- 【BZOJ】4001: [TJOI2015]概率论
题意 求节点数为\(n\)的有根树期望的叶子结点数.(\(n \le 10^9\)) 分析 神题就打表找规律.. 题解 方案数就是卡特兰数,$h_0=1, h_n = \sum_{i=0}^{n-1} ...
- BZOJ4001[TJOI2015]概率论——卡特兰数
题目描述 输入 输入一个正整数N,代表有根树的结点数 输出 输出这棵树期望的叶子节点数.要求误差小于1e-9 样例输入 1 样例输出 1.000000000 提示 1<=N<=10^9 设 ...
- 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). 类 ...
随机推荐
- Tokyo Tyrant(TTServer)系列(一)-介绍和安装
Tokyo Cabinet 是日本人Mikio Hirabayashi 开发的一款DBM 数据库,该数据库读写很快.哈希模式写入100 万条数据仅仅需0.643 秒.读取100 万条数据仅仅需0.77 ...
- 戳破ZigBee技术智能家居的谎言!
戳破ZigBee技术智能家居的谎言 一.ZigBee介绍 简介 在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷.对工业,家庭自动化控制和遥测遥控领域而言,蓝牙技术显得太复杂, ...
- glide引出恶心的git submodule
起因 某一天一个同事,在看那个glide,然后我路过,看到他为何不编译“glide”项目(他说,编译中出错,反正都是看源码而已,所以就懒得搞,然后我出于“好心”,给他弄一下,我擦) 报错: Pro ...
- 云服务jdk 升级为 OpenJDK11
由于oracle是个碧池,大家都懂,今年来,jdk版本更新的越来越频繁,所以目前商业版本需要收费了 每个企业都要考虑这样的问题,所以嘛,新项目试水肯定是要的,用openJDK11吧, https:// ...
- numpy 随机产生数字
python数据分析的学习和应用过程中,经常需要用到numpy的随机函数,由于随机函数random的功能比较多,经常会混淆或记不住,下面我们一起来汇总学习下. 1 numpy.random.rand( ...
- idea 自动导入
- application.properties详解 --springBoot配置文件【转载】
# spring boot application.properties配置的各个属性详解 # 该示例文件作为标准提供.(官方文档 翻译过来的) # 还是花了些功夫翻译,各位如果转发,请留下本文地址, ...
- Linux的rp_filter与策略路由
Linux的rp_filter用于实现反向过滤技术,也即uRPF,它验证反向数据包的流向,以避免伪装IP攻击,但是它和Linux的策略路由却很容易发生冲突,其本质原因在于,uRPF技术强制规定了一个反 ...
- 3.贝叶斯网络表示(The Bayesian Network Representation)
对于一个n随机变量的联合分布,一般需要2**n-1个参数来表示这个分布.但是,我们可以通过随机变量之间的独立性,减少参数的个数. naive Beyes model: Bayesian Network ...
- 同时安装anaconda2和anaconda3
安装的过程请参考 Ubuntu14.04下同时安装Anaconda2与Anaconda3 启动的时候cd到$HOME/anaconda2/envs/py3k/bin下 source activate ...