樹型DP入門

2021-07-10 05:18:35 字數 662 閱讀 3927

題意:

某公司要舉辦一次晚會,但是為了使得晚會的氣氛更加活躍,每個參加晚會的人都不希望在晚會中見到他的直接上司,現在已知每個人的活躍指數和上司關係(當然不可能存在環),求邀請哪些人(多少人)來能使得晚會的總活躍指數最大。

思路:

任何乙個點的取捨可以看作一種決策,那麼狀態就是在某個點取的時候或者不取的時候,以他為根的子樹能有的最大活躍總值。分別可以用f[i,1]和f[i,0]表示第i個人來和不來。

當i來的時候,dp[i][1] += dp[j][0];//j為i的下屬

當i不來的時候,dp[i][0] +=max(dp[j][1],dp[j][0]);//j為i的下屬

#include 

#include

#include

using namespace std;

int father[6005],vis[6005],dp[6005][2],t;

void dfs(int node)}}

int main()

memset(vis,0,sizeof(vis));

dfs(root);

printf("%d\n",max(dp[root][1],dp[root][0]));

}return 0;

}

樹型DP簡單入門

anniversary party 題目鏈結 裡面的關係是乙個樹狀的無環圖,每個節點我們顯然有兩種取法,參加派對,不參加派對,所以狀態轉移方程就出來了 includeusing namespace std const int n 1e4 10 int head n to n nex n in n c...

樹型DP 選課

大學裡實行學分。每門課程都有一定的學分,學生只要選修了這門課並考核通過就能獲得相應的學分。學生最後的學分是他選修的各門課的學分的總和。每個學生都要選擇規定數量的課程。其中有些課程可以直接選修,有些課程需要一定的基礎知識,必須在選了其它的一些課程的基礎上才能選修。例如,資料結構 必須在選修了 高階語言...

樹型DP 皇宮看守

太平王世子事件後,陸小鳳成了皇上特聘的御前一品侍衛。皇宮以午門為起點,直到後宮嬪妃們的寢宮,呈一棵樹的形狀 有邊直接相連的宮殿可以互相望見。大內保衛森嚴,三步一崗,五步一哨,每個宮殿都要有人全天候看守,在不同的宮殿安排看守所需的費用不同。可是陸小鳳手上的經費不足,無論如何也沒法在每個宮殿都安置留守侍...