题解 [BZOJ2830] [SHOI2012] 随机树

6830: [BZOJ2830]随机树

Q1:f[x]表示有x个叶子节点时的平均深度

\[f[x]=\frac{f[x-1]*(x-1)+f[x-1]+2}{x}=f[x-1]+\frac{2}{x} \]

Q2:f[x][y]表示有x个叶子节点,树深度>=y的概率

\[f[x][y]=\sum_{k=1}^{i-1}\frac{f[k][y-1]+f[i-k][y-1]-f[k][y-1]*f[i-k][y-1]}{i-1} \]

其中 f[k][y-1]f[i-k][y-1] 是左右子树深度都>=j的概率,在之前被加了2次

接下来的问题是证明

左右叶节点不同的出现的概率相等(本题核心)

举个例子,100个叶子节点的树,我们要证明
左边99个叶子节点,右边1个叶子节点的树出现的概率与两边都是50个叶子节点的树一样

接下来就是玄学的数学证明:

设一颗树有i个叶子节点,左子树有k个叶子节点,刚开始一定数从根展开,则左右子树分别还需展开(k-1),(i-k-1)次;

我们可以发现根节点展开的顺序和最终结果无关

我们可以这样展开:

LLLRRR

也可以这样

LRRLRL

那么展开顺序的方案有

\[C_{k-1+i-k-1}^{k-1}=C_{i-2}^{k-1}=\frac{\left(i-2\right)!}{\left(k-1\right)!\left(i-k-1\right)!} \]

我们可以发现第一次展开时,只能选一个根节点,第二次可以选两个,第三次三个,所以展开k次的方案有 k! 种

则左右子树分别展开(k-1),(i-k-1)的方案为

\[\left(k-1\right)!\left(i-k-1\right)! \]

总方案为 展开顺序方案 × 展开方案

也就是

\[\left(i-2\right)! \]

这居然和k无关!,所以我们之前的猜想是正确的

ohohohohohohohohohoh!!!!!

可以开香槟庆祝了

完美结束

posted @ 2021-06-02 19:38  We269  阅读(82)  评论(0)    收藏  举报