某大學有n個職員,編號為1~n。他們之間有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。現在有個周年慶宴會,宴會每邀請來乙個職員都會增加一定的快樂指數ri,但是呢,如果某個職員的上司來參加舞會了,那麼這個職員就無論如何也不肯來參加舞會了。所以,請你程式設計計算,邀請哪些職員可以使快樂指數最大,求最大的快樂指數。
接下來n-1行,每行輸入一對整數l,k。表示k是l的直接上司。
最後一行輸入0 0
樹形dp:f[i][0/1] := 以 i 為根的子樹,不選(0)或選(1),的最大快樂指數。
\[$ 如果 i 不選,f[i][0] = \sigma_v max(f[v][0],f[v][1]) $
\]\[$ 如果 i 選了,那兒子都不能選, f[i][1] = \sigma_v f[v][0] + r[i] $
\]
#include#include#include#includeusing namespace std;
vectorson[6010];
int f[6010][2],r[6010],c[6666],rt,n;
void dfs(int p)
}int main()
for(int i = 1;i < n;++i)
for(int i = 1;i <= n;++i) }
int _0;
scanf("%d%d",&_0,&_0);
dfs(rt);
printf("%d\n",max(f[rt][0],f[rt][1]));
return 0;
}
Luogu P1352 沒有上司的舞會
洛谷傳送門 某大學有n nn個職員,編號為1 n 1 sim n 1 n。他們之間有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。現在有個周年慶宴會,宴會每邀請來乙個職員都會增加一定的快樂指數r ir i ri 但是呢,如果某個職員的上司來參加舞會了,那麼這個職員就...
LuoguP1352 FJSC 沒有上司的舞會
現在你有一棵樹,每乙個點有乙個點權 r i 如果選擇了 i 點,那麼 i 子樹上的所有的點都不能選,現在要求選擇若干個點,使得點權和最大。設 dp i 1 為選擇 i 點的 i 子樹的最大點權和,dp i 0 為不選擇 i 點的 i 子樹的最大點權和,那麼我們知道初始化為 dp i 0 sum ma...
P1352 沒有上司的舞會
原題鏈結 樹形dp入門 dp方程搞錯了居然還過了90 利用dfs遞迴求解 每個點分為選和不選兩種情況 假設選為1不選為0 dp x 0 max dp num i 1 dp num i 0 這裡一開始寫成了dp num i 1 但它的兒子的兩種狀態實際上都是可選的 dp x 1 dp num i 0 ...