一、题目
二、解法
先考虑第一个问题,如何得到所求的最大和。我们可以对原式做下列变换:
∑ i = 1 n d i s ( i , p i ) = 2 ∑ i = 1 n d e p [ i ] − 2 ∑ i = 1 n d e p [ l c a ( i , p i ) ] \sum_{i=1}^n dis(i,p_i)=2\sum_{i=1}^ndep[i]-2\sum_{i=1}^ndep[lca(i,p_i)] i=1∑ndis(i,pi)=2i=1∑ndep[i]−2i=1∑ndep[lca(i,pi)] d e p dep dep就是当前点到根的距离,由于这是距离,我们随便选根算出来的答案都是一样的,而且选定根后前面一部分的值是固定的。考虑选取树的重心作为根,那么一定可以构造出一个排列使后面的部分值为 0 0 0,因为重心为根的任意子树大小都不超过 n 2 \frac{n}{2} 2n,所以两两配对时就在不同的两个子树中选节点配对,一定能取到 0 0 0