某大學有n個職員,編號為1~n。他們之間有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。現在有個周年慶宴會,宴會每邀請來乙個職員都會增加一定的快樂指數ri,但是呢,如果某個職員的上司來參加舞會了,那麼這個職員就無論如何也不肯來參加舞會了。所以,請你程式設計計算,邀請哪些職員可以使快樂指數最大,求最大的快樂指數。
$ f_ $表示以x為根的子樹,且x不參加(0)參加(1)舞會的最大快樂值
則 $f_ = \sum_^ max \,f_ \}$
$f_ = ^f_ } \ \ + r_$
答案為$ max \,f_ \} $
#include
using
namespace
std;
const
int maxn = 6000 + 10;
int n,dp[maxn][2],r[maxn],root;
vector
edges[maxn];
bool vis[maxn];
inline
void
dfs(int now)
}int
main
() for (int i = 1;i <= n;i++) if (!vis[i])
dfs(root);
printf("%d",max(dp[root][0],dp[root][1]));
return
0;}
#include
using
namespace
std;
const
int maxn = 6000 + 10;
int n,dp[maxn][2],r[maxn],root;
vector
edges[maxn];
bool vis[maxn];
inline
void
dfs(int now)
}int
main
() for (int i = 1;i <= n;i++) if (!vis[i])
dfs(root);
printf("%d",max(dp[root][0],dp[root][1]));
return
0;}
luogu1352 沒有上司的舞會
某大學有n個職員,編號為1 n。他們之間有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。現在有個周年慶宴會,宴會每邀請來乙個職員都會增加一定的快樂指數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 ...