题解「TJOI2015 概率论」

\(g_n\)\(n\) 个节点的二叉树所有情况下的叶子节点数和,\(f_n\)\(n\) 个节点的二叉树的本质不同方案数。则我们断言 \(g_n=nf_{n-1}\)

试图证明这一结论。

对于一棵有 \(a\) 个叶子节点的二叉树,分别删去 \(a\) 个叶子节点,可以得到 \(a\) 棵不同的 \(n-1\) 个节点的二叉树。我们标记这些 \(n-1\) 个节点的二叉树,则最终 \(g_n\) 的值就为所有 \(n-1\) 个节点的二叉树被标记的次数。

现在我们需要证明,任意一棵 \(n-1\) 个节点的二叉树,都会被标记 \(n\) 次。设只有 \(1\) 个儿子节点的点有 \(b\) 个,有 \(2\) 个儿子节点的点有 \(c\) 个。那么有:

\[\begin{cases} b+2c=n-1 \\ a+b+c=n \end{cases} \]

可以解得 \(2a+b=n+1\)。想一想,\(a\) 个叶子节点每个点可以接 \(2\) 个叶子,\(b\) 个只有一个儿子节点的点可以接 \(1\) 个叶子,也就是说:一棵 \(n\) 个点的树有 \(n+1\) 个不同的位置可以接叶子。换言之,任意一棵 \(n-1\) 个点的二叉树,都一定会被标记 \(n\) 次。

那么 \(f_n\) 怎么求呢?枚举左子树节点数,有:

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

这不就是 \(Cat_n\) 么,直接通项求就好了。

最终答案 \(ans=\frac{nf_{n-1}}{f_n}=\frac{n(n+1)}{2(2n-1)}\)

posted @ 2020-10-30 17:02  tommymio  阅读(65)  评论(0编辑  收藏  举报