POJ 2342 Anniversary party树形dp
来源:互联网 发布:董秘助手软件下载 编辑:程序博客网 时间:2024/06/10 10:37
题目链接:POJ 2342
题意:在一个公司里,每个成员都有各自的rating,要参加一次年会,规定 有直接上下级关系的任意两人不能同时参加,并且要使参加年会成员的rating值最大;
题解:关于树形dp—树形dp总结
而对于这题,对于么个成员都有去不去两种可能,用dp[i][0]表示他不去的最大rating值,dp[i][1]表示去的最大rating
因此:
dp[x][0] += max(dp[i][0], dp[i][1]);
dp[x][1] += dp[i][0];//i为x的直接下级
代码:
#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;#define debug 0#define M(a, b) memset(a, b, sizeof(a))const int maxn = 6000 + 5;int father[maxn], a[maxn], n, dp[maxn][2], vis[maxn];void Dp(int x) {vis[x] = 1;for (int i = 1; i <= n; i++) {if (vis[i])//这题用vis[]降低遍历,额 其实并没有什么卵用continue;if (father[i] == x) {Dp(i);//递归调用直接下级dp[x][0] += max(dp[i][0], dp[i][1]);dp[x][1] += dp[i][0];}}}int main() {#if debugfreopen("in.txt", "r", stdin);#endif //debugint x, y, root;scanf("%d", &n);for (int i = 1; i <= n; i++) {scanf("%d", &a[i]);dp[i][0] = 0;dp[i][1] = a[i];}M(father, 0);M(vis, 0);while (~scanf("%d%d", &x, &y), x + y) {father[x] = y;//用数组模拟树,记录上下级关系root = y;//root 记录当前的上级}while (father[root])root = father[root];//寻找根节点(目测是boss)Dp(root);//递归printf("%d\n", max(dp[root][0], dp[root][1]));return 0;}
1 0
- poj 2342 Anniversary party 树形DP
- poj 2342 Anniversary Party(树形dp)
- POJ 2342 Anniversary party(树形DP)
- poj 2342 Anniversary party 简单树形dp
- poj 2342 Anniversary party,树形DP easy
- POJ 2342 Anniversary Party ( 树形DP )
- poj 2342Anniversary party(树形dp)
- poj 2342 Anniversary party 简单树形dp
- POJ - 2342 Anniversary party 树形DP
- poj 2342 Anniversary party(树形dp)
- POJ-2342::Anniversary party-树形DP
- POJ 2342Anniversary party(树形DP)
- POJ 2342 Anniversary party (树形dp)
- poj 2342 Anniversary party(树形dp)
- POJ 2342 Anniversary party【树形DP】
- POJ 2342 - Anniversary party (树形dp)
- POJ 2342 Anniversary party(树形dp)
- poj 2342 Anniversary party (树形DP)
- 五大常用算法思想
- AndrewNG-MachineLearning-Week1
- Handle机制详解
- poj 1401Factorial
- ffmpeg 的编译选项
- POJ 2342 Anniversary party树形dp
- PAT.1049. Counting Ones (30)
- mongodb命令批量插入json文件数据
- 云管理平台简介
- Spring AOP
- 谈图像处理
- iOS 到处 ipa包的时候 会有四个选项分别代表什么
- cocos2dx CCFileUtils::sharedFileUtils() 静态调用
- 线程池