HDU -- 5242(思路题目)

来源:互联网 发布:淘宝实名小号收购 编辑:程序博客网 时间:2024/06/06 09:15

本题目给定一颗以1为根的树,每个节点都有一个权,记,从根走到叶子节点的一条线为一条路,问从根走到叶子k次,最多可以得到得到的权和。被走过的点的权不再被叠加。

(1<=n,k<=100000)

思路:

首先这题目,不适合树形背包,数据范围太大,树形背包大概是被背数量上限的平方的复杂度即K^2。

可以用贪心的思想来做该题目:

首先求出每个点直接选一条路走到根得到的最大权,那么考虑第一次应该怎么走,贪心的想第一次应该走一条权和最大的路径,权和为d[1]。

那么,下一次就不用考虑该路径上的点然后一直贪下去。

这个题目的证明策略和想到这样做的根源都是数学归纳法

实现的时候用线段树做单点修改和维护最大值即可。

0 0