[HAOI2015]树上染色(树形dp,树形背包)
生活随笔
收集整理的這篇文章主要介紹了
[HAOI2015]树上染色(树形dp,树形背包)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
鏈接:https://ac.nowcoder.com/acm/problem/19996
來源:牛客網
題目描述
有一棵點數為N的樹,樹邊有邊權。給你一個在0~N之內的正整數K,你要在這棵樹中選擇K個點,將其染成黑色,并將其他的N-K個點染成白色。
將所有點染色后,你會獲得黑點兩兩之間的距離加上白點兩兩之間距離的和的收益。問收益最大值是多少。
輸入描述:
第一行兩個整數N,K。
接下來N-1行每行三個正整數fr,to,dis,表示該樹中存在一條長度為dis的邊(fr,to)。
輸入保證所有點之間是聯通的。N ≤ 2000,0 ≤ K ≤ N
輸出描述:
輸出一個正整數,表示收益的最大值。
示例1
輸入
復制
5 2
1 2 3
1 5 1
2 3 1
2 4 2
輸出
復制
17
說明
【樣例解釋】
將點1,2染黑就能獲得最大收益。
這種題目一看就是枚舉每條邊的貢獻。通過這道題目接觸了樹形背包。。
dp[i][j]表示著以i為根的子樹中有j個點染成黑色的最大價值。
子樹中的每個點都有兩種狀態,染色或者是不染色。所以類似于01背包。
代碼如下:
努力加油a啊,(o)/~
總結
以上是生活随笔為你收集整理的[HAOI2015]树上染色(树形dp,树形背包)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [CQOI2009]叶子的染色(树形dp
- 下一篇: 旅游(树形dp求树的最大独立集)