這題目的意思好難讀,直接無語,原來最佳切割,要保證所有的葉子都被切掉。
直接揹包就行,d[ i ] [ j ] 代表編號為i的節點用最多為j個點對其所在子樹形成的最佳割。
#include #include #include #include #include #include #include #include #include using namespace std;
typedef unsigned long long llu;
const int maxn = 2100000;
#define lson rt<<1
#define rson rt<<1|1
#define rep(i,n) for(int (i)=0;(i)
樹形揹包DP
include using namespace std const int n 310,m n 2 int h n ne m v m idx int w n int dp n n int n,m void add int a,int b void dfs int u for int j m j 0 ...
(選課)揹包類樹形dp
選課 學校實行學分制。每門的必修課都有固定的學分,同時還必須獲得相應的選修課程學分。學校開設了 n 門的選修課程,每個學生可選課程的數量 m 是給定的。學生選修了這 m 門課並考核通過就能獲得相應的學分。在選修課程中,有些課程可以直接選修,有些課程需要一定的基礎知識,必須在選了其他的一些課程的基礎上...
POJ 1155 TELE (樹形DP,樹形揹包)
題意 給定一棵樹,n個節點,其中有m個葉子表示的是使用者,其他點表示中轉器,每條邊都有權值,每個使用者i願意給的錢w i 問如果在不虧錢的情況下能為多少使用者轉播足球比賽?思路 其實就是要選出部分葉子節點,其花費 所選葉子權值 經過的所有邊權 每條邊只算1次花費 那麼對於每個節點,可以考慮在其子樹下...