TJOI 2015 概率论(生成函数)
题意
求一棵随机生成的有根二叉树(节点无标号,各种不同构的情况随机出现)叶子结点个数的期望。
思路
用生成函数做是个好题。
我们考虑设 \(n\) 个节点,所有不同构二叉树叶子结点的总和为 \(f_n\) 。首先,\(n\) 个节点的无标号有根二叉树种类数为 \(C_n\) ,其中 \(C_n\) 表示卡特兰数。那么递推式比较显然
\[
\begin{align*}
f_n&=\sum_{i=0}^{n-1}f_{i}C_{n-1-i}+f_{n-1-i}C_i\\
&=2\sum_{i=0}^{n-1} f_iC_{n-1-i}
\end{align*}
\]
特别的 \(f_0=0, f_1=1\) (求递推一定要考虑特殊情况,往往前面几项不满足递推)。
我们设数列 \(\{f_n\}\) 的生成函数为 \(F(x)\) , 数列 \(\{C_n\}\) 的生成函数为 \(G(x)\) 。
观察递推式,我们由卡特兰数递推的生成函数推导得到启发,可以将 \(F(x)\) 乘上 \(G(x)\) 。
\[
\begin{align*}
F(x)G(x)&=f_0C_0x^0+(f_0C_1+f_1C_0)x^1+(f_0C_2+f_1C_1+f_2C_0)x^2+\cdots\\
&=f_0C_0x^0+{f_2\over 2}x^1+{f_3\over 2}x^2+{f_4\over 2}x^3+\cdots\\
&={f_2x^1+f_3x^2+f_4x^3+\cdots\over2}\\
&={F(x)-(f_0x^0-f_1x^1)\over 2x}\\
&={F(x)-x\over 2x}\\
\end{align*}
\]
解得
\[
F(x)={1\over 1-2xG(x)}
\]
而卡特兰数的生成函数 \(G(x)\) 等于 \(\displaystyle{1-(1-4x)^{1\over 2}\over 2x}\)
代入得到
\[
\begin{align*}
F(x)&={x\over {\sqrt{1-4x}}}\\
&=x(1-4x)^{-{1\over 2}}
\end{align*}
\]
进行广义二项式展开
\[
\begin{align*}
F(x)&=x\sum_{i=0}^{+\infty}{-{1\over 2}\choose i}(-4x)^i\\
&=x\sum_{i=0}^{+\infty}{(-{1\over 2})\times(-{3\over 2})\times\cdots\times(-{2i-1\over 2})\over i!}(-4x)^i\\
&=x\sum_{i=0}^{+\infty}{2^i\times1\times3\times\cdots\times(2i-1)\over i!}x^i\\
&=x\sum_{i=0}^{+\infty}{2^i\times{2i!\over 2^ii!}\over i!}x^i\\
&=x\sum_{i=0}^{+\infty}{2i!\over i! i!}x^i\\
&=\sum_{i=0}^{+\infty}{2i\choose i}x^{i+1}\\
&=\sum_{i=1}^{+\infty}{2i-2\choose i-1}x^i\\
\end{align*}
\]
于是我们得到了
\[
f_n=\begin{cases}
\displaystyle{2n-2\choose n-1}&n>0\\
0&n=0
\end{cases}
\]
题目要求的,其实就是 \(\displaystyle{f_n\over C_n}\) ,即当 \(n=0\) 时,答案为 \(0\) ;否则答案为 \(\displaystyle{2n-2\choose n-1}\over \displaystyle{{1\over n+1}{2n\choose n}}\) 。
简化一下,变成了 \(\displaystyle {n(n+1)\over 4n-2}\) ,这就是最终的答案。
代码
输入 \(n\) ,输出 \(\displaystyle {n(n+1)\over 4n-2}\) 就行了,要什么代码??
TJOI 2015 概率论(生成函数)的更多相关文章
- 【bzoj4001】[TJOI2015]概率论 生成函数+导数
题目描述 输入 输入一个正整数N,代表有根树的结点数 输出 输出这棵树期望的叶子节点数.要求误差小于1e-9 样例输入 1 样例输出 1.000000000 题解 生成函数+导数 先考虑节点个数为$n ...
- BZOJ 3998 [TJOI 2015] 弦论 解题报告
这是一道后缀自动机经典题目. 对于 $t=0$ 的情况:每个节点都代表一个子串,所以我们给每个节点的 $Size$ 都记为 $1$, 对于 $t=1$ 的情况:我们只给 $last$ 节点的 $Siz ...
- BZOJ 3997 [TJOI 2015 组合数学] 解题报告
这个题我脑洞了一个结论: 首先,我们定义满足以下条件的路径为“从右上到左下的路径”: 对于路径上任何不相同的两个点 $(x_1, y_1)$,$(x_2, y_2)$,都有: $x_1\neq x_2 ...
- BZOJ 3996 [TJOI 2015] 线性代数 解题报告
首先,我们可以得到: $$D = \sum_{i=1}^{n}\sum_{j=1}^{n}a_i\times a_j\times b_{i,j} - \sum_{i=1}^{n}a_i\times c ...
- 解题:TJOI 2015 弦论
题面 好像是个经典问题,然而我没做过 建SAM,然后经过每个节点的子串数目就可以求了,多个相同子串算一个的话就把所有siz都搞成$1$,否则就是$right$集合的大小,然后就是常见的递推 求第$k$ ...
- 解题:TJOI 2015 组合数学
题面 通过这个题理解了一下反链的概念,更新在图论知识点里了 每个点向右和下连边可以建出一张图,这个题事实上是让我们求图的最小链覆盖.Dilworth定理告诉我们,最小链覆盖等于最长反链(反链:DAG中 ...
- 后缀自动机(SAM)奶妈式教程
后缀自动机(SAM) 为了方便,我们做出如下约定: "后缀自动机" (Suffix Automaton) 在后文中简称为 SAM . 记 \(|S|\) 为字符串 \(S\) 的长 ...
- 【BZOJ4001】[TJOI2015]概率论(生成函数)
[BZOJ4001][TJOI2015]概率论(生成函数) 题面 BZOJ 洛谷 题解 这题好仙啊.... 设\(g_n\)表示\(n\)个点的二叉树个数,\(f_n\)表示\(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). 类 ...
随机推荐
- Java & PHP RSA 互通密钥、签名、验签、加密、解密
RSA加密算法是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用.RSA是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Le ...
- Mysql相关问题-----1045 Access denied for user 'root'@'localhost' (using password: YES)报错
MySQL 连接错误,使用Navicat连接MySQL出现错误:1045 Access denied for user 'root'@'localhost' (using password: YES) ...
- Spring Cloud Ribbon客户端负载均衡(四)
序言 Ribbon 是一个客户端负载均衡器(Nginx 为服务端负载均衡),它赋予了应用一些支配 HTTP 与 TCP 行为的能力,可以得知,这里的客户端负载均衡也是进程内负载均衡的一种.它在 Spr ...
- 搜索旋转排序数组II
题目 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [,,,,,,] 可能变为 [,,,,,,] ). 编写一个函数来判断给定的目标值是否存在于数组中.若存在返回 true, ...
- JavaScript的__proto__、prototype和继承
JavaScript也是可以“继承”的! 各位看官或是好奇,或是一知半解.什么是prototype,__proto__,constructor.哪种继承方式好.今天就在这交流交流. 什么是protot ...
- SQL和T-SQL之间的区别
对于SQL,在我的上一篇博客中<何谓SQL Server数据库?与Access数据库 有什么区别>里面,已经着重说明了SQL作为访问和处理数据库的标准的计算机语言,所以这里就不做过多强调. ...
- img error 图片加载失败的最佳方案
有时候, 当img的src加载失败, 会显示缺省碎片图片, 影响用户体验. 有一个js事件onerror就派上了用场. 它可以在加载失败时, 显示缺省的图片. 它有两种使用方式. 第一种: 使用纯 ...
- Mysql 报错:#1067 - Invalid default value for 'update_time
由于 字段UPDATE_TIME 的字段类型是 timestamp ,默认值是:'0000-00-00 00:00:00' 即:`UPDATE_TIME` timestamp NOT NULL DEF ...
- Python requests库的使用(一)
requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.python-requests.org/z ...
- 腾讯WeTest兼容服务再次升级,支持小程序兼容
WeTest 导读 小程序作为微信内能被便捷地获取和传播的工具,吸引着越来越多的开发者加入其中.无论是小游戏.零售.出行服务还是生活餐饮等,各行各业的小程序出现在用户的手机上,在给用户带来便利的同时, ...