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

2022-06-09 14:03:08 字數 764 閱讀 6160

題目鏈結

這是一道終極經典的樹形dp的例題。

樹形dp就是將dp的資料放到了一棵樹上。每個父節點與其子節點的值有關。推出如何建樹和遞推公式即可。

f[i][j].(j=1/0)i表示這是誰,j為1時表示來,0時表示不來。這個式子表示i來或不來時的最大快樂值。

設k為他的下屬。

則f[i][1]+=f[k][0],f[i][0]+=max(f[k][0],f[k][1]).

即當i來時,j肯定不能來。則加上k不能來時的最大快樂值。

當i不來時,j來不來都有可能。則加上j來和不來中的最大值。

ac**如下:

#include#include

#include

using

namespace

std;

typedef

long

long

ll;int n,h[6005],v[6005],f[6005][2

]; vector

son[6005

];void dp(intx)}

intmain()

for(int i=0;i1;i++)

introot;

for(int i=0;i)

if(!v[i])

dp(root);

printf(

"%d\n

",max(f[root][0],f[root][1

]));

return0;

}

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