【HDU】1520-Anniversary party(初级树形DP)
来源:互联网 发布:张翠山 知乎 编辑:程序博客网 时间:2024/05/05 08:43
不是什么难题,但也算自己写的第一个树形DP,留个纪念吧= =
状态方程(dp[0][i]代表不选i人参加聚会时候的最大值,dp[1][i]代表选)
dp[0][pos] = max(dp[0][pos],max(dp[0][e] + dp[0][pos],dp[1][e] + dp[0][pos]));dp[1][pos] = max(dp[1][pos],dp[1][pos] + dp[0][e]);
#include<cstdio>#include<cstring>#include<algorithm>#include<vector>using namespace std;const int maxn = 6005;int n;int v[maxn];int vis[maxn];int dp[2][maxn];vector<int>G[maxn];void dfs(int pos){ if(!G[pos].size()){ dp[0][pos] = 0; dp[1][pos] = v[pos]; return; } dp[0][pos] = 0; dp[1][pos] = v[pos]; for(int i = 0; i < G[pos].size(); i++){ int e = G[pos][i]; dfs(e); dp[0][pos] = max(dp[0][pos],max(dp[0][e] + dp[0][pos],dp[1][e] + dp[0][pos])); dp[1][pos] = max(dp[1][pos],dp[1][pos] + dp[0][e]); } return;}int main(){ while(scanf("%d",&n) != EOF){ memset(vis,0,sizeof(vis)); for(int i = 1; i <= n; i++) G[i].clear(); for(int i = 1; i <= n; i++) scanf("%d",&v[i]); int a,b; while(scanf("%d%d",&a,&b)){ if(!a && !b) break; G[b].push_back(a); vis[a] = 1; } int s; for(int i = 1; i <= n; i++) if(!vis[i]){ s = i; break; } dfs(s); printf("%d\n",max(dp[0][s],dp[1][s])); } return 0;}
0 0
- 【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)
- HDU 1520 Anniversary party (树形dp,dfs+dp)
- 树形DP---hdu 1520 Anniversary Party
- HDU 1520 Anniversary party(树形DP入门)
- HDU 1520 Anniversary party-----树形DP
- 【树形DP】 HDU 1520 Anniversary party
- 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)
- 浅谈J2EE WEB入门及tomcat的安装和使用
- SQL server中的SELECTt查询语句执行顺序
- LeetCode – Triangle
- currentStyle和getComputedStyle的应用
- 博客之家
- 【HDU】1520-Anniversary party(初级树形DP)
- 表达式求值(C/C++)
- Android 下 Kernel Debug (Qualcomm Chipset)
- 3.1 垃圾收集机制及垃圾收集器介绍
- 二维k-means
- grunt插架创建学习
- [省选前题目整理][UOJ 35]后缀排序(后缀数组)
- 揭秘阿里服务互联网金融的关系数据库——OceanBase
- 自定义Andriod ContentProvider