POJ 2342 树形DP入门水题
来源:互联网 发布:大数据技术无疑是当前 编辑:程序博客网 时间:2024/05/18 00:25
题意
N个人,每个人有一个参加宴会的开心值,每个人不能和他的上级同时参加宴会。问参加宴会的人员开心值总和最大是多少?
题解
最基础的树形DP,对于一个人有两种状态,dp[m][0]代表不参加宴会,则dp[m][0]+=max(dp[m][1],dp[m][0])。dp[m][1]代表参加宴会,因此其子节点就不能参加宴会,dp[m][1]+=dp[m][0]。
代码
#include <iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;int dp[6010][2];int p[6010];bool vis[6010];int n;void dfs(int m){ vis[m]=true; for(int i=1;i<=n;i++){ if(!vis[i]&&p[i]==m){ dfs(i); dp[m][0]+=max(dp[i][1],dp[i][0]); dp[m][1]+=dp[i][0]; } }}int main(){ while(~scanf("%d",&n)){ memset(dp,0,sizeof(dp)); memset(p,0,sizeof(p)); memset(vis,false,sizeof(vis)); for(int i=1;i<=n;i++){ scanf("%d",&dp[i][1]); } int n,m; while(scanf("%d%d",&n,&m)){ if(n+m==0) break; p[n]=m; } dfs(0); printf("%d\n",max(dp[0][1],dp[0][0])); } return 0;}
0 0
- POJ 2342 树形DP入门水题
- POJ 2342 树形DP入门题
- poj 2342 树形dp入门
- [ACM] POJ 2342 Anniversary party (树形DP入门题)
- POJ 2342 Anniversary party (树形dp 入门题)
- [ACM] POJ 2342 Anniversary party (树形DP入门题)
- HDU 1520 & POJ 2342 Anniversary party(树形DP入门题)
- 树形dp入门之poj 2342
- POJ 2342 (树形dp入门)
- poj 2342 Anniversary party 树形dp入门
- poj 2342 Anniversary party 树形dp入门
- POJ 3342 树形DP入门题
- POJ 1947 树形DP入门题
- 树形dp poj 2342
- poj 2342 树形DP
- poj 2342 树形DP
- poj 2342 树形DP
- poj 2342 树形dp
- WIN7 客户端远程连接virtualBox虚拟机下Fedora25 Mariadb服务器笔记
- Android Studio与Eclipse项目互相导入方法总结
- C++高级编程(第3版) 读书笔记
- python第三次作业
- mybatis (一)
- POJ 2342 树形DP入门水题
- cogs 746.[网络流24题] 骑士共存
- 分治法//旧文迁移
- Sherman-Morrison-Woodburg 定理
- NYOJ 20 吝啬的国度
- 专栏:老罗的Android之旅
- sshd远程主机间的访问
- 支付宝面试题——趣味发红包
- java.lang.NoClassDefFoundError: Could not initialize class ... DefaultConversionService