【洛谷】P3978 [TJOI2015]概率论

原题链接

题意:

随机生成一个有 \(n\) 个节点的二叉树,所有互相不同构的形态等概率出现。求叶子节点的期望数。

\(1 \leq n \leq 10^9\)

思路:

\(f_i\) 为大小为 \(i\) 的二叉树的个数。根据经典结论,这是一个卡特兰数,即 \(f_i=\dfrac{\binom{2n}{n}}{n+1}\)

\(g_i\) 为大小为 \(i\) 的二叉树的叶子节点数之和。

  • 对于一棵 \(n\) 个点的二叉树,假设它有 \(a\) 个叶子节点,\(b\) 个只有一个子节点的节点,\(c\) 个有两个子节点的节点。那么就有 \(a+b+c=n\),而由于所有节点一共有 \(n-1\) 个父亲,于是有 \(b+2c=n-1\),而一共有 \(2a+b=n+1\) 个地方可以悬挂新的叶子节点。

  • 因此,每一棵 \(n-1\) 个节点的二叉树对 \(g_{n}\) 就贡献了 \(n\) 次,那么也就可以得到 \(g_n=f_{n-1}*n\)

于是,最终的答案就是:

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

code:

posted @ 2023-03-13 11:19  曙诚  阅读(26)  评论(0)    收藏  举报