洛谷P1352 沒有上司的舞會 樹形DP

2022-09-03 05:33:09 字數 1024 閱讀 5826

給出一棵帶點權的樹,若選擇乙個點,那麼不能選擇這個點的父節點。求最大點權和。

很經典的一道樹形dp題目。當然dfs也應該可以過。設f[

i][0

/1]f

[i][

0/1]

表示選擇或不選擇第i

i個結點的最大點權和。那麼我們如果選擇了這個點,那麼它的子節點就不能選擇,就有方程:f[

i][1

]=∑j

=1so

n[i]

f[j]

[0]f

[i][

1]=j

=1∑s

on[i

]​f[

j][0

]那如果不選這個點,那麼子節點擊或不選都可以,那麼:f[

i][0

]=∑j

=1so

n[i]

max(

f[j]

[1],

f[j]

[0])

f[i]

[0]=

j=1∑

son[

i]​m

ax(f

[j][

1],f

[j][

0])

#include

#include

using

namespace std;

int n,x,y,f[

6001][

2],num[

6001

],a[

6001];

bool not_root[

6001];

mapint,

int>

,int

> son;

voiddp(

int x)

//遞迴

}int

main()

for(

int i=

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

(!not_root[i]

)//是根節點

}

洛谷 P1352 沒有上司的舞會

洛谷 p1352 沒有上司的舞會 某大學有n個職員,編號為1 n。他們之間有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。現在有個周年慶宴會,宴會每邀請來乙個職員都會增加一定的快樂指數ri,但是呢,如果某個職員的上司來參加舞會了,那麼這個職員就無論如何也不肯來參加舞...

洛谷 P1352 沒有上司的舞會

原題 這道題我非常神奇賴皮的用了拓撲,實際上這是一道樹形dp,但是身為蒟蒻的我覺得拓撲可以寫,結果真的讓我水過了,哈哈哈 用乙個二維陣列模擬每個人參加或者不參加,從最底層的員工開始向上拓撲 by acer.mo include include includeusing namespace std i...

洛谷p1352 沒有上司的舞會

題目已經說了這是一棵樹,而這道題顯然不是重心或者lca之類的東西,所以我們考慮樹形dp。一句廢話 首先考慮如果節點i不去舞會時以i為根的子樹的快樂指數最大值,顯然就是每個以i的兒子為根的子樹的最大值之和。如果節點i參加舞會,那麼相應的最大值就是i的每個兒子都不去時,以i的兒子為根的最大值之和,再加上...