[TJOI2015]概率论

壹、题目描述

传送门 to LUOGU

贰、题解

这道题使用的期望概率方案是:“整体 / 整体”.

我们考虑最后的答案就是 “所有有 \(n\) 个点二叉树的叶子数的总数 / 有 \(n\) 个点的二叉树个数”,那么我们定义一些变量:

  • \(f_i\) 表示所有有 \(i\) 个点二叉树的叶子数的总数,\(f_0=0,f_1=1\)
  • \(g_i\) 表示有 \(i\) 个点的二叉树个数,\(g_0=1\)

答案为 \(f_n\over g_n\).

考虑 \(g_i\) 有转移

\[g_n=\sum_{i=0}^{n-1}g_ig_{n-i-1} \]

下标减一是因为有根,不难看出这是卡塔兰数,可得通项 \(g_n={1\over n+1}{2n\choose n}\).

对于 \(f_i\) 的转移,我们考虑枚举其中一棵子树的叶子,但是考虑左右对称,还得带上一个 \(2\) 的系数,那么有

\[f_n=2\sum_{i=0}^{n-1}f_ig_{n-i-1} \]

下标差一还是因为有一个点拿来当根。

考虑使用生成函数:定义 \(G(x)\)\(g_i\) 的普通生成函数,\(F(x)\)\(f_i\) 的普通生成函数,由 这篇文章的 贰·四 部分 可得

\[G(x)={1-\sqrt{1-4x}\over 2x} \]

同时,由 \(f_n=2\sum_{i=0}^{n-1}f_ig_{n-i-1}\) 可得

\[F(x)=2xF(x)G(x)+x \]

其中,\(\times x\) 是因为下标差一,\(+x\) 是为了处理 \(f_1=1\) 的特殊情形。

\(G(x)={1-\sqrt{1-4x}\over 2x}\) 带入,可得

\[F(x)={x\over \sqrt{1-4x}} \]

发现出现了 \(\sqrt{1-4x}\),我们考虑使用 \(G(x)\) 凑出这个部分。

发现有 \((xG(x))'={1\over \sqrt{1-4x}}\),那么有

\[(xG(x))'={F(x)\over x} \]

也就是说,\(G(x)\) 中的 \(g_nx^n\) 这一项求导之后变成 \(ng_nx^{n-1}\) 乘上 \(x\) 变成 \(ng_nx^n\),这一项系数为 \(g_n\times n\),它和 \(F(x)\) 中的 \(f_{n+1}x^{n+1}\) 除以 \(x\) 之后变成了 \(f_{n+1}x^n\),这两项系数是一样的,说明

\[f_{n+1}=g_n\times n\Leftrightarrow f_n=g_{n-1}n={{2n-2\choose n-1}\over n}\times n={2n-2\choose n-1} \]

而我们要求的是

\[{f_n\over g_n}={{2n-2\choose n-1}(n+1)\over {2n\choose n}}={n(n+1)\over 2(2n-1)} \]

时间复杂度竟然达到了惊人的 \(\Theta (1)\)

叁、参考代码

输入输出都有人参考的吗?

肆、用到の小 \(\tt trick\)

本题使用求期望的方案是 整体/整体 。

另外,惊人地发现 “有 \(i\) 个点的二叉树个数” 其实就是卡塔兰数的第 \(i\) 项。

posted @ 2021-03-01 22:02  Arextre  阅读(60)  评论(0编辑  收藏  举报