题解 [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!!!!!
可以开香槟庆祝了
完美结束

浙公网安备 33010602011771号