鄰接表 樹狀DP 沒有上司的晚會

2021-10-01 11:09:59 字數 1570 閱讀 1496

description

ural大學有n

nn個職員,編號為1

11~n

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

input

第一行乙個整數n

nn。(

1<=n

<

=6000

)(1<=n<=6000)

(1<=n

<=6

000)

接下來n

nn行,第i+1

i+1i+

1行表示i號職員的快樂指數riri

ri。(

−128

<=r

i<

=127

)(-128<=ri<=127)

(−12

8<=r

i<=1

27)接下來n−1

n-1n−

1行,每行輸入一對整數l

ll,k

kk。表示k

kk是l

ll的直接上司。

最後一行輸入0,0。

output

輸出最大的快樂指數。

sample input7

1111

1111 3

2 36 4

7 44 5

3 50 0

sample output

解題思路

用鄰接表存,a

aa為鄰接表,.y.y

.y指向員工,b

bb設f[r

oot]

[1

]f[root][1]

f[root

][1]

為第r oo

troot

root

個職員參加晚會的最優值

f [r

oot]

[0

]f[root][0]

f[root

][0]

為第r oo

troot

root

個職員不參加晚會的最優值

#include

#include

using namespace std;

const int maxn=

6010

;struct dt

a[maxn]

;int b[maxn]

,n,s[maxn]

,f[maxn][2

],num,gun;

bool t[maxn]

;void

dp(int root)

}int main()

for(int i=

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

printf

("%d"

,gun)

;}

沒有上司的晚會 樹形DP

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

沒有上司的晚會(樹形DP)

一道比較水的樹形dp 由題意得,兩個相鄰的節點不能同時取,而且存在負數 dp定義很直接 dp i 1 取 dp i 0 不取 dp陣列存最大值 可以從根節點dfs下去 收集0和1的資訊 狀態轉移也很顯然 dp x 0 max dp y 0 dp y 1 dp x 1 dp y 0 include i...

沒有上司的晚會 樹形DP

某公司要舉辦一次晚會,但是為了使得晚會的氣氛更加活躍,每個參加晚會的人都不希望在晚會中見到他的上司,要不然他們會很掃興。現在已知每個人的活躍指數和上司關係 當然不可能存在環 求邀請哪些人來能使得晚會的總活躍指數最大。利 用鏈 式儲存結 構。對於 每乙個頂 點,開一 條鏈,依 次儲存以 該點為起 點的...