沒有上司的舞會(樹形dp)

2021-10-05 06:16:27 字數 1288 閱讀 5938

ural大學有n名職員,編號為1~n。

他們的關係就像一棵以校長為根的樹,父節點就是子節點的直接上司。

每個職員有乙個快樂指數,用整數 hi 給出,其中 1≤i≤n。

現在要召開一場周年慶宴會,不過,沒有職員願意和直接上司一起參會。

在滿足這個條件的前提下,主辦方希望邀請一部分職員參會,使得所有參會職員的快樂指數總和最大,求這個最大值。

輸入格式

第一行乙個整數n。

接下來n行,第 i 行表示 i 號職員的快樂指數hi。

接下來n-1行,每行輸入一對整數l, k,表示k是l的直接上司。

輸出格式

輸出最大的快樂指數。

資料範圍

1≤n≤6000,

−128≤hi≤127

輸入樣例:71

1111

111 32 3

6 47 4

4 53 5

輸出樣例:

5思路:從下往上回溯(也就是dfs)

dp[x][…]代表x所在的子樹的最大快樂值(包括x的快樂值))(1代表選擇,0代表不選)

樹形的動態規劃

這個點不取時,子節點可以取或不取:dp[x][0]+=max(dp[y][0],dp[y][1]);

這個點取時,子節點不能取:dp[x][1]+=dp[y][0];

#include

#include

#include

#include

#define ll long long

#define inf 0x3f3f3f3f

using

namespace std;

vector<

int> a[

6005];

int b[

6005

],n,x,y,vis[

6005

],dp[

6005][

2];void

dfs(

int x)

}int

main()

int root;

for(

int i=

1;i<=n;i++)}

dfs(root)

;printf

("%d\n"

,max

(dp[root][0

],dp[root][1

]));

return0;

}

樹形dp 沒有上司的舞會

題意 給定一棵樹,每個點有權值,對於每乙個點,它和它的父節點不能同時被選,求權值最大值。定義d p x 0 dp x 0 表示不選擇x號點時的最大值,dp x 1 d p x 1 表示選擇 x x 號點時的最大值。對於x role presentation style position relati...

樹形DP 沒有上司的舞會

ural大學有n名職員,編號為1 n。他們的關係就像一棵以校長為根的樹,父節點就是子節點的直接上司。每個職員有乙個快樂指數,用整數 hi 給出,其中 1 i n。現在要召開一場周年慶宴會,不過,沒有職員願意和直接上司一起參會。在滿足這個條件的前提下,主辦方希望邀請一部分職員參會,使得所有參會職員的快...

沒有上司的舞會 樹形DP

ural大學有n名職員,編號為1 n。他們的關係就像一棵以校長為根的樹,父節點就是子節點的直接上司。每個職員有乙個快樂指數,用整數 hi 給出,其中 1 i n。現在要召開一場周年慶宴會,不過,沒有職員願意和直接上司一起參會。在滿足這個條件的前提下,主辦方希望邀請一部分職員參會,使得所有參會職員的快...