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). 类 ...
随机推荐
- C#版Websocket实例
C#版Websocket实例 Demo地址:www.awbeci.xyz websocket有java.nodejs.python,Php等等版本,我使用的是C#版本,服务器端是Fleck,git ...
- Hive 根据表中某个字段动态分区 以及临时表创建
使用hive储存数据时,需要对做分区,如果从kafka接收数据,将每天的数据保存一个分区(按天分区),保存分区时需要根据某个字段做动态分区,而不是傻傻的将数据写到某一个临时目录最后倒入到某一个分区,这 ...
- 阿里云oss缩略图如何产生读取 超简单 不看后悔(转)
OSS是使用通过URL尾部的参数指定图片的缩放大小 图片路径后面拼接如下路径: ?x-oss-process=image/[处理类型],x_100,y_50[宽高等参数] ?x-oss-process ...
- Latex中cls和sty文件有何区别?
Latex中cls和sty文件有何区别? 资源 本文对 LaTeX 中 .cls 和 .sty 文件进行介绍,主要参考了 What are .cls and .sty files?How are th ...
- SSM 整合 quartz JDBC方式实现job动态增删改查记录
虽然网上有很多资料,但是都不够系统,本文记录下自己的整合过程. 1. 搭建一个SSM项目,此处略. 2. 按照quartz官方要求,建立quartz相关的数据库和表,相关sql语句如下: /* Nav ...
- 重置BizTalk RosettaNet
RosettaNet如果出现问题,可以进行重新配置安装,不过重置过程稍微有点麻烦.步骤如下: 注意:执行如下步骤前请做全部备份工作,如BTARN文件夹,自主开发的BTARN应用程序源码.MSI及Bin ...
- 2018年中国C++大会详细日程+报名
http://purecpp.org/detail?id=2050
- HMACSHA1 加密算法
https://blog.csdn.net/z69183787/article/details/78393216 ******************************************* ...
- java中获取两个时间中的每一天
引入下面方法即可: /** * 获取两个时间中的每一天 * @param bigtimeStr 开始时间 yyyy-MM-dd * @param endTimeStr 结束时间 yyyy-MM-dd ...
- HAWQ集成Yarn HA作为资源管理服务
一.第一步当然是配置YARN HA,这在使用ambari管理时很简单,这里不在赘述. 二.建立HAWQ的专用资源队列queue 不要手工编辑scheduler设置,最方便的当然是使用queue man ...