沒有上司的晚會

2021-09-03 02:56:02 字數 1154 閱讀 2943

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

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

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

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

最後一行輸入0,0。

711

1111

1132

3647

4453

500

輸出最大的快樂指數

5
當這個點取的時候,他的所有兒子都不能取,所以

f[i,1]:=sum(f[j,0],j為i的兒子)+i的權值。

不取的時候,他的所有兒子取不取無所謂,不過當然應該取價值最大的一種情況。

所以,f[i,0]:=sum(max(f[j,1],f[j,0]),j為i的兒子)。

如何儲存樹?

利用鏈式儲存結構。對於每乙個頂點,開一條鏈,依次儲存以該點為起點的邊。

下面的**用e陣列儲存邊的資訊,head[i]儲存i這個頂點對應的鏈的起始位置。

通時e中的next域使所有起始點為i的邊連成一條鏈。

#include

#include

#include

using

namespace std;

int n,l,k,tot,f[

6001][

6001

],a[

6001

],head[

6001

],b[

6001

],s[

6001];

//初始化

struct emmmmmm//初始化emmmmmm型別變數

e[100000];

//初始化

voidqu(

int w)

}int

main()

for(

int i=

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

return0;

}

沒有上司的晚會 樹形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

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