[IAMOI R2] 未送出的花 题解
Solution
我们确定一种盛开度的方案后,将每个点的美丽度算出来,从大到小排序,就是这种盛开度方案的结果。
先找找性质。
性质 1
观察样例,可以发现父亲的盛开度总是大于儿子的盛开度。
怎么证明?反证法。
我们考虑两个结点
因为交换后:
- 对于
u 子树外的结点,没有影响; - 对于
v 子树内的结点,也没有影响; - 对于
u 子树内的结点但是v 子树外的结点,其祖先链的盛开度集合中的u 对应盛开度变为v ,其中位数一定变大或者不变。
那么最后的美丽度集合一定不劣。
性质 2
由性质 1 可知,每一个点的美丽度是其祖先链中位数的点的盛开度。
就是说,每一个点的美丽度,直接由中位数祖先的盛开度决定。
那么,每一个点盛开度,所影响到美丽度的点的数量也是一定的。
DP
定义树的拓扑序为:对树的所有节点进行排列,使得每个节点都出现在其父节点之后的排列。
由性质 1,最优方案是按照树的某种拓扑序,从大到小给定盛开度。
记每一个点所能影响到的点数量为
答案可以表述为:找到一个最大的
(即找到一个最大的
考虑树形 DP(或者说是树上背包)。
设
对于每一个
初始条件是
时间复杂度为树形背包复杂度为