HDU 1520 Anniversary party (树形DP)
2013-08-24 14:45
323 查看
转载请注明出处:忆梦http://blog.csdn.net/yimeng2013/article/details/10266765
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520题目大意:Ural State University要庆祝她的80年校庆,想邀请她的员工来参加,每一个员工都是有一个快乐值,最重要的是规定了邀请的员工之间不能有直接的上下级关系,求邀请到的员工最大的快乐值。
题解:最基础的树形dp,也是本屌第一次做树形dp的题目.
一共就两种状态,root不被邀请参加和root被邀请参加,标记这两种状态为dp[root][0],dp[root][1]。
①root被邀请参加的话,root的孩子就不能被选择了,就转化为选取root孩子中状态为0的最大值。
②root不被邀请参加的话,注意这里可以选root的孩子也可以不选,所以就转化为加上root所有孩子中被选或者不被选两者间的最大值。
话不多说,请看代码。
#include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> #include<vector> using namespace std; #define N 6005 int dp [2]; struct Node { int parent; vector<int>son; }Node ; void dfs(int root) { int len = Node[root].son.size(); for(int i = 0; i < len; i++) dfs(Node[root].son[i]); for(int i = 0; i < len; i++) { dp[root][0] += max(dp[Node[root].son[i]][1],dp[Node[root].son[i]][0]); dp[root][1] += dp[Node[root].son[i]][0]; } } int main () { int n; while(scanf("%d", &n) != EOF) { memset(dp, 0, sizeof(dp)); for(int i = 1; i <= n; i++) { scanf("%d", &dp[i][1]); Node[i].parent = -1; Node[i].son.clear(); } int a, b; while(scanf("%d %d", &a, &b), a+b) { Node[a].parent = b; Node[b].son.push_back(a); } int root = 1; while(Node[root].parent != -1) root = Node[root].parent; dfs(root); printf("%d\n",max(dp[root][1],dp[root][0])); } return 0; }
相关文章推荐
- hdu 1520 Anniversary party(树形dp)
- HDU 1520 & POJ 2342 Anniversary party(树形DP入门题)
- HDU 1520 Anniversary party(树形DP)
- hdu-1520 Anniversary party(树形dp)
- HDU 1520 Anniversary party (简单树形DP)
- HDU 1520 Anniversary party(简单树形DP)
- hdu 1520 Anniversary party[树形dp]
- hdu 1520 Anniversary party(树形DP)
- hdu 1520 Anniversary party(基本树形DP)
- hdu 1520 Anniversary party(树形dp)
- HDU1520 Anniversary party 解题报告【树形DP】
- hdu 1520 && poj2342 anniversary party树形DP
- HDU 1520 Anniversary party (树形DP)
- HDU 1520 - Anniversary party(树形DP)
- POJ 2342 && HDU 1520 Anniversary party(树形DP)
- HDU 1520 Anniversary party【树形DP】
- 【HDU】1520-Anniversary party(初级树形DP)
- HDU 1520 Anniversary party(树形dp)
- 【HDU 1520】Anniversary party(树形DP)
- Hdu 1520 Anniversary party【树形DP】