2019-10-15做题记录

鉴于$HellPix$无法完成之前的任务,训练的制度进行了改革。

【NOI2013】树的计数

题意简述

给定一棵树的$dfs$序和$bfs$序,求它深度的期望。

题解

首先,显然的,以$bfs$序为自然排列,对$dfs$序做一次置换。

其次,我们知道,要对$bfs$序做划分,连续的一组代表这些节点的深度都是一样的,组和组之间的深度是递增的。

我们知道,如果我们做好了划分,一定能确定树的形态,这里给出一种方法:

1.首先$1$号节点肯定单独一组,子树是$dfs$序上$i \in [1..n]$的$dfn[i]$。
2.再找$2,3..$号节点,既然它们在一组,每个点找下一个点出现的位置,从它的位置到下一个点出现的位置即子树的区间。
3.以此类推。

这样划分一定是可以构造出来这棵树的。

但是当这个构造方法不能奏效时,就无法构造这棵树。有两种情况:

1.对于同组之间的元素,$bfs$序上,同一组的数的位置没有递增(即子树范围是负的)
2.对于不同组之间的元素,有的$dfs$序上连续的两点,它们之间要么是父-子关系,要么先上,再向下一步,即$dep[dfn[i]]+1 \ge dep[dfn[i+1]]$。

有了这两个条件

猜你喜欢

转载自www.cnblogs.com/shxnb666/p/11680038.html