洛谷P1352 沒有上司的舞會(DP)

2021-08-17 17:51:20 字數 1247 閱讀 2364

樹形dp入門題目。

樹形dp其實和普通的dp區別就在於轉移的方式。

普通的dp的狀態轉移是在一張表上,表的座標表示不同的狀態。而樹形dp由於其特殊性,即題目中描述的關係滿足樹形的結構,所以利用樹形結構進行狀態的轉移。

由於是在樹上進行狀態轉移,所以dfs是必不可少的。

對於這道題來說,關係正好是一棵樹,並且可以明確的是,如果選擇了父節點,那麼其子節點就不能選擇;如果不選擇其父節點,那麼就子節點就有選和不選兩種決策,取最大值即可。狀態轉移方程呼之而出。用dp

[rt]

[0] dp[

rt][

0]

來表示不選擇rt

r

t這個節點,而用dp

[rt]

[1] dp[

rt][

1]

來表示選擇這個節點,狀態轉移方程如下:dp

[rt]

[0]+

=max

(dp[

son]

[0],

dp[s

on][

1]) dp[

rt][

0]+=

max(

dp[s

on][

0],d

p[so

n][1

])

dp[rt][

1]+=

dp[s

on][

0]d p[

rt][

1]+=

dp[s

on][

0]

#include

using

namespace

std;

const

int nmax = 6050;

int dp[nmax][2];

int a[nmax];

int ind[nmax];

int n;

vector

v[nmax];

void dfs(int rt)

return;

}int main()

int root = 0;

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

}// printf("root %d\n",root);

printf("%d\n",max(dp[root][1],dp[root][0] ) ) ;

return

0;}

洛谷 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的兒子為根的最大值之和,再加上...