codevs1380 沒有上司的舞會 樹形dp

2022-05-20 19:07:10 字數 924 閱讀 7069

題目描述

ural大學有n個職員,編號為1~n。他們有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。每個職員有乙個快樂指數。現在有個周年慶宴會,要求與會職員的快樂指數最大。但是,沒有職員願和直接上司一起與會。

輸入第一行乙個整數n。(1<=n<=6000)

接下來n行,第i+1行表示i號職員的快樂指數ri。(-128<=ri<=127)

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

最後一行輸入0,0。

輸出輸出最大的快樂指數。

樣例輸入71

1111

111 32 3

6 47 4

4 53 5

0 0樣例輸出

題解裸的樹形dp。

f[x]代表x參加時最大快樂指數,g[x]代表x不參加時最大快樂指數。

那麼易推得f[x]=r[x]+∑g[son[x][i]],g[x]=∑max(f[son[x][i]],g[son[x][i]])。

答案即為max(f[root],g[root])。

#include #include using namespace std;

int f[6001] , g[6001] , r[6001];

bool mark[6001];

vectorson[6001];

void dp(int x)

}int main()

scanf("%d%d" , &x , &y);

for(i = 1 ; i <= n ; i ++ )

if(!mark[i])

root = i;

dp(root);

printf("%d\n" , max(f[root] , g[root]));

return 0;

}

codevs1380 沒有上司的舞會

題目描述 description ural大學有n個職員,編號為1 n。他們有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。每個職員有乙個快樂指數。現在有個周年慶宴會,要求與會職員的快樂指數最大。但是,沒有職員願和直接上司一起與會。輸入描述 input descri...

CODEVS 1380 沒有上司的舞會

題意 在一棵樹上每個點都有價值,在這些點裡找出一些互不相連的點並使其價值之和最大。標籤是樹形dp,於是我第一次就嘗試著用dp做,然而在讀入的時候這個題挖了個坑,讀入a,b,b是a的上司,然而我二話沒說就把a當做了b的上司,結果就做不出來了。然後第二次我就 think diffierent 用了一種貪...

CODEVS 1380沒有上司的舞會

include include include using namespace std vector sons 6010 int mmax int a,int b if f cur state 0 return f cur state int sum 0 for int i 0 iint tryso...