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