Loading

【题解】P3978 [TJOI2015]概率论

黑 暗 降 临

思路

生成函数。

这个题可以找规律得到答案 \(\frac{n (n + 1)}{2 (2n - 1)}\),rqy 姐姐的题解太神仙了喵,所以我来整个大力生成函数的做法。

首先设 \(f_n\) 表示所有 \(n\) 个结点的二叉树的叶结点数量之和,\(g_n\)\(n\) 个结点的二叉树数量。根据期望定义得答案是 \(\frac{f_n}{g_n}\).

\(g_n\) 就是卡特兰数,所以有 \(g_n = \sum\limits_{i = 0}^{n - 1} g_i g_{n - i - 1} = \frac{{2n \choose n}}{n + 1}\)

考虑钦定 \(f_n\) 的子树大小,考虑这棵确定子树的贡献,得到 \(f_n = 2 \sum\limits_{i = 0}^{n - 1} f_i g_{n - i - 1}\),乘以 \(2\) 的原因是对称一下左右子树的贡献是相同的。

\(F(x) = \sum\limits_{i = 0}^{+ \infty} f_i x^i, G(x) = \sum\limits_{i = 0}^{+ \infty} g_i x^i\).

根据递推式得 \(G(x) = x G^2(x) + 1, F(x) = 2 x F(x) G(x) + x\)(注意考虑平移后的边界).

根据上式可以解得 \(G(x) = \frac{1 \pm \sqrt{1 - 4x}}{2x}\),其中 \(G(x) = \frac{1 + \sqrt{1 - 4x}}{2x}\) 的情况不收敛,所以 \(G(x) = \frac{1 - \sqrt{1 - 4x}}{2x}\).

同理 \(F(x)\) 可以解得 \(F(x) = \frac{x}{\sqrt{1 - 4x}}\).

此时有一个很神仙的结论:\((x G(x))^{\prime} = \frac{1}{\sqrt{1 - 4x}} = \frac{F(x)}{x}\),证明考虑直接求导。

那么这意味着 \(\forall i \geq 0, (x g_i x^i)^{\prime} = [x^{i + 1} g_i]^{\prime} = (i + 1) g_i x^i = \frac{f_{i + 1} x^{i + 1}}{x} = f_{i + 1} x^i\),所以 \(f_{i + 1} = (i + 1) g_i\).

所以 \(\forall i \geq 1, f_n = n g_{n - 1}\),且 \(g_0 = 1\).

\(g_n = \frac{{2n \choose n}}{n + 1}\) 代入化简得 \(\frac{n (n + 1)}{2 (2n - 1)}\),得证。

复杂度 \(O(1)\).

代码

#include <cstdio>
using namespace std;

typedef double db;

int main()
{
    db n;
    scanf("%lf", &n);
    printf("%.12f\n", n * (n + 1) / (2 * (2 * n - 1)));
    return 0;
}
posted @ 2023-02-03 15:05  kymru  阅读(21)  评论(0编辑  收藏  举报