1、hdu 1520 anniversary party
2、總結:第一道樹形dp,有點糾結
題意:公司聚會,員工與直接上司不能同時來,求最大權值和
#include#includeview code#include
#include
#include
#include
#define max(a,b) a>b?a:b
using
namespace
std;
#define ll long long
#define inf 0x3f3f3f3f
const
int n=6010
;struct
eage
eage[n
<<1
];int val[n],out
[n];
int dp[n][2]; //
dp[i][0]表示i不去,dp[i][1]表示i去
int ans,head[n]; //
head記錄邊的次序
void add_eage(int a,int b) //
難點,理解邊,構樹
void dfs(int
root)
}int
main()
memset(
out,0,sizeof(out
)); memset(head,-1,sizeof
(head));
inta,b;
ans=0
;
while(scanf("
%d%d
",&a,&b),a||b)
introot;
for(int i=1;i<=n;i++)
}memset(dp,
0,sizeof
(dp));
dfs(root);
printf(
"%d\n
",max(dp[root][0],dp[root][1
]));
}return0;
}
HDU1520(樹形dp入門題)
題意 在乙個有根樹上每個節點有乙個權值,每相鄰的父親和孩子只能選擇乙個,問怎麼選擇總權值之和最大。思路 樹形dp的常規入門題 設dp i 0 表示 當前這個點不選,dp i 1 表示當前這個點選擇的最優解。轉移方程 dp cur 0 max dp son 1 dp son 0 當前這個點不選,那他的...
HDU 1520 簡單樹形dp
題意 乙個大學要舉行職工party。為使party中每個人都玩的開心,直接上司和下屬關係的員工不能同時參加。每個人都有各自的歡樂值。問如何邀請使得總歡樂值最大。dp i 1 表示選擇i點 dp i 0 表示不選擇i點 include include include include using nam...
HDU1520 樹形dp入門)
解題思路 設dp i 0 表示 當前這個點不選,dp i 1 表示當前這個點選擇的最優解。轉移方程 dp cur 0 max dp son 1 dp son 0 當前這個點不選,那他的孩子可選可不選,取 最大的。dp cur 1 dp son 0 當前這點選擇,那他的孩子就不能選擇。include ...