模考T4の题解

这道题目一开始大家肯定想到树,但是这道题目还是要一些思维量的。

首先我们考虑一个点的权值 a_i 和它在图中的深度 dep_i

我们可以考虑他们的差 c_i=a_i-dep_i 我们注意到 c_i 的值是不会变的!因为当它向上一位的时候 dep_ia_i 都同时加一,同样的道理,如果向下值也是不变的。

接下来考虑这个 c_i 要比模拟 a_i 的变化要简单多了!

我们尝试联系出 c_ia_i 的关系,我们会发现若 c_i<c_{f(i)} 那么 a_i≤a_{f(j)} 因为 c_i=a_i-dep_i=a_{f(i)}-dep_i-1<a_{f(i)}-dep_i=a_{f(i)} !即 a_{f(i)}≥a_i

那么容易发现每个点都可以移动到树上的任意一个点!那么我们只需要考虑如何将 c_i 填入树种即可。

首先我们先确定唯一的最大值填在根节点上。

填充完毕后,我们便将除根节点以外的子树,变为链。

由贪心我们先填充 c_i 出现次数多的,并且先从长的链开始填充。

1 个赞