P1232 Sol
P1232 [NOI2013] 树的计数
定义
\rm dfs 是每个点按照儿子顺序依次递归,\rm bfs 是取出队首将队首的儿子加入队列。(两种搜索的”儿子顺序“这个量已经确定。)
给定
\rm dfs 序和\rm bfs 序,求出满足二者的所有树的高度的平均数。保证存在一棵树满足条件。
首先把平均数变成所有合法树中随一个,期望高度。
高度其实就是将
期望线性性拆成每个点后面分段的概率和。
先把点们重新标号,按照
考虑
- 若
d_i+1=d_{i+1} ,则i+1 可以是i 的儿子或兄弟(此时i 为叶子),没有什么限制。 - 若
d_i+1<d_{i+1} ,则i+1 必定是i 的兄弟,因为\rm bfs 完可以立即到达但\rm dfs 去找别人了,该间隔被分段的概率是0 。 - 若
d_{i}+1>d_{i+1} ,则i+1 必定与i 分层,因为\rm dfs 先走到i+1 再走到i ,因为儿子顺序固定所以二者不可能同层,该间隔被分段的概率是1 。
想象一棵树每个点的儿子都已经按照儿子顺序从左到右排好了,那么第三种情况就是走到一层的结尾,跑到了下一层的开头,只要
而第一种情况说的是所有爷爷——父亲——独生儿子的情况 与 所有 父亲(原爷爷)——儿子 1(作为叶子,原父亲)——儿子 2(原独生儿子,不一定是叶子)的情况是对偶的,即树上所有的这两种结构可以相互转化,而不影响其他任何结构以及
(注意后种情况仍需保证原爷爷的其他儿子顺序不变,仅仅是把原父亲这个位置换成了先”原父亲“再”原独生儿子“这个结构。)
继续发掘,你发现两序确定后唯一符合两序的调整就是该调整,进一步地讲:将这些结构全部调整为第一种形式,那考虑所有最高链上的该结构每个结构可以自由选择是否调整为第二种形式让高度减小
此时我们确定了一些概率,考虑接着找找条件,考虑
- 若
x+1>y ,说明x>y ,也就是说情况必然为x 是某个叶子,递归完x 到了y ,不能得到什么有用结论。 - 若
x+1=y ,这种就是上面的d_i+1=d_{i+1} ,同样考虑过了。 - 若
x+1<y ,由于二者之间是先后递归的关系,且回溯的情况被上两种统计到了,所以y 是x 的一个儿子,二者深度相差不超过1 ,这说明[x,y-1] 中有且仅有一个元素后面可以放分段。
不难发现上文中
既然这个”有且仅有一个元素“已经确定是哪个元素了,不妨我们视作将
题解中有人不会证充要(似乎所有人都没证),为什么这样可以
其实你可以参考上图,本层 (下称第
那第
而如果它有儿子,你惊喜地发现它符合上图中