题意

​ 求一棵随机生成的有根二叉树(节点无标号,各种不同构的情况随机出现)叶子结点个数的期望。

思路

​ 用生成函数做是个好题。

​ 我们考虑设 \(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 概率论(生成函数)的更多相关文章

  1. 【bzoj4001】[TJOI2015]概率论 生成函数+导数

    题目描述 输入 输入一个正整数N,代表有根树的结点数 输出 输出这棵树期望的叶子节点数.要求误差小于1e-9 样例输入 1 样例输出 1.000000000 题解 生成函数+导数 先考虑节点个数为$n ...

  2. BZOJ 3998 [TJOI 2015] 弦论 解题报告

    这是一道后缀自动机经典题目. 对于 $t=0$ 的情况:每个节点都代表一个子串,所以我们给每个节点的 $Size$ 都记为 $1$, 对于 $t=1$ 的情况:我们只给 $last$ 节点的 $Siz ...

  3. BZOJ 3997 [TJOI 2015 组合数学] 解题报告

    这个题我脑洞了一个结论: 首先,我们定义满足以下条件的路径为“从右上到左下的路径”: 对于路径上任何不相同的两个点 $(x_1, y_1)$,$(x_2, y_2)$,都有: $x_1\neq x_2 ...

  4. 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 ...

  5. 解题:TJOI 2015 弦论

    题面 好像是个经典问题,然而我没做过 建SAM,然后经过每个节点的子串数目就可以求了,多个相同子串算一个的话就把所有siz都搞成$1$,否则就是$right$集合的大小,然后就是常见的递推 求第$k$ ...

  6. 解题:TJOI 2015 组合数学

    题面 通过这个题理解了一下反链的概念,更新在图论知识点里了 每个点向右和下连边可以建出一张图,这个题事实上是让我们求图的最小链覆盖.Dilworth定理告诉我们,最小链覆盖等于最长反链(反链:DAG中 ...

  7. 后缀自动机(SAM)奶妈式教程

    后缀自动机(SAM) 为了方便,我们做出如下约定: "后缀自动机" (Suffix Automaton) 在后文中简称为 SAM . 记 \(|S|\) 为字符串 \(S\) 的长 ...

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

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

  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). 类 ...

随机推荐

  1. Vue.js 源码分析(十九) 指令篇 v-html和v-text指令详解

    双大括号会将数据解释为普通文本,而非 HTML 代码.为了输出真正的 HTML,你需要使用 v-html 指令,例如: <!DOCTYPE html> <html lang=&quo ...

  2. docker命令之link

    1.新建两台容器,第二台(busybox_2)link到第一台(busybox_1) [root@localhost ~]# docker run -d -it --name busybox_1 bu ...

  3. Gitlab 备份还原/迁移

    Gitlab 备份还原 备份数据:通过命令进行备份操作 gitlab-rake gitlab:backup:create ... [DISABLED] Creating backup archive: ...

  4. kali渗透综合靶机(六)--FristiLeaks靶机

    kali渗透综合靶机(六)--FristiLeaks靶机 靶机地址下载:https://download.vulnhub.com/fristileaks/FristiLeaks_1.3.ova 一.主 ...

  5. CSS教程详解

    CSS学习笔记 一.CSS基础 1.CSS简介 层叠:一层一层的: 样式表:很多的属性和样式 CSS语法: <style> 选择器 { 属性名:属性值; 属性名:属性值; ……  } &l ...

  6. Enum.GetUnderlyingType(obj.GetType())

    Enum.GetUnderlyingType(obj.GetType())获取保存枚举值的数据类型:

  7. Winform中设置ZedGraph的曲线为散点图

    场景 Winform中设置ZedGraph的曲线符号Symbol以及对应关系: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  8. XMind破解版,2019年8月好使

    越来越多的公司用思维导图了,进行编写测试用例,以下为破解版,亲身实验才发 的  ,中国时间2019年8月5日 下载安装包: 链接:https://pan.baidu.com/s/1-ubJLPSEpH ...

  9. centos通过yum快速安装JDK1.8

    centos通过yum快速安装JDK1.8检索1.8的列表:yum list java-1.8*安装1.8.0的所有文件:yum install java-1.8.0-openjdk* -y 出现 C ...

  10. SWPUCTF 2019 web

    web1 知识点 ## information_schema绕过 ##无列名注入 注入点在广告申请广告名字处,申请广告名为 查看广告详细返回错误 接下来就是常规的union注入的套路,但是发现or被过 ...