原題鏈結
樹形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];
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using namespace std;
void add(int p1,int p2)
void dfs(int x)
return;
}int main()
for(i=1;i<=n;i++)
if(!f[i])
dfs(boss);
for(i=1;i<=n;i++)
ans=max(ans,max(dp[i][0],dp[i][1]));
printf("%d",ans);
return 0;
}
P1352 沒有上司的舞會
題目描述 某大學有n個職員,編號為1 n。他們之間有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。現在有個周年慶宴會,宴會每邀請來乙個職員都會增加一定的快樂指數ri,但是呢,如果某個職員的上司來參加舞會了,那麼這個職員就無論如何也不肯來參加舞會了。所以,請你程式設計...
P1352 沒有上司的舞會
題目 p1352 沒有上司的舞會 演算法標籤 dp,搜尋,樹形結構,記憶化搜尋 從樹的頭往下求結果會有後效性,且有多個葉子節點,資料不易處理 則採用,葉子節點往頭部求結果 對於某一節點,有選擇和不選擇兩種情況 1 不選擇的話 記 dp 0 for int i 0 i a x tail.size i ...
P1352 沒有上司的舞會
某大學有n個職員,編號為1 n。他們之間有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。現在有個周年慶宴會,宴會每邀請來乙個職員都會增加一定的快樂指數ri,但是呢,如果某個職員的上司來參加舞會了,那麼這個職員就無論如何也不肯來參加舞會了。所以,請你程式設計計算,邀請...