本題目給定一顆以1為根的樹,每個節點都有乙個權,記,從根走到葉子節點的一條線為一條路,問從根走到葉子k次,最多可以得到得到的權和。被走過的點的權不再被疊加。
(1<=n,k<=100000)
思路:首先這題目,不適合樹形揹包,資料範圍太大,樹形揹包大概是被背數量上限的平方的複雜度即k^2。
可以用貪心的思想來做該題目:
首先求出每個點直接選一條路走到根得到的最大權,那麼考慮第一次應該怎麼走,貪心的想第一次應該走一條權和最大的路徑,權和為d[1]。
那麼,下一次就不用考慮該路徑上的點然後一直貪下去。
這個題目的證明策略和想到這樣做的根源都是數學歸納法
實現的時候用線段樹做單點修改和維護最大值即可。
hdu5242 上海邀請賽 優先佇列 貪心
題意是給你一棵樹 n個點 n 1條邊 起點是1 每乙個點都有權值 每次能從根節點走到葉子節點 經行k次遊戲 每次都是從1開始 拿過的點的權值不能拿第二次 問最大權值和。說說我的做法吧 map i a表示i節點的跟節點為a節點 從全部葉子節點開始入隊 有點佇列裡有三個變數 各自是節點編號 權值 深度 ...
HDU 5416(思路題目)
題意 給定一棵樹,要求統計所有的f u,v 使得路徑上的權值異或之和為乙個查詢值,魅族資料查詢數至多為10 解析 從 f u v f u 1 1 v 這樣先預處理f 1 i 然後統計即可,注意統計的時候 cnt陣列要開到 1 17 因為路徑權值不超過1e5,至多為17位二進位制數。異或最大值不超過 ...
HDU 5242 Game 樹鏈剖分
原題鏈結 給一棵樹,每個節點都有乙個權值,每次操作從根節點開始到葉子節點,問k次操作,最多可以取多少。因為答案是對樹鏈求和統計,所以可以考慮樹剖,也是考慮去剖重鏈 根據權值 最後只要沿著重兒子一路統計出所有的鏈的值,在從大到小排個序取k個就可以了。想到樹剖之後就是相當板子的題了。include in...