本题目给定一颗以1为根的树,每个节点都有一个权,记,从根走到叶子节点的一条线为一条路,问从根走到叶子k次,最多可以得到得到的权和。被走过的点的权不再被叠加。
(1<=n,k<=100000)
思路:
首先这题目,不适合树形背包,数据范围太大,树形背包大概是被背数量上限的平方的复杂度即K^2。
可以用贪心的思想来做该题目:
首先求出每个点直接选一条路走到根得到的最大权,那么考虑第一次应该怎么走,贪心的想第一次应该走一条权和最大的路径,权和为d[1]。
那么,下一次就不用考虑该路径上的点然后一直贪下去。
这个题目的证明策略和想到这样做的根源都是数学归纳法
实现的时候用线段树做单点修改和维护最大值即可。