HDOJ 1561 The more, The Better
来源:互联网 发布:网络培训系统 编辑:程序博客网 时间:2024/05/21 22:34
简单的树形背包。。。
The more, The Better
Time Limit: 2000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u
[Submit] [Go Back] [Status]
Description
ACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物。但由于地理位置原因,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其他某一个特定的城堡。你能帮ACboy算出要获得尽量多的宝物应该攻克哪M个城堡吗?
Input
每个测试实例首先包括2个整数,N,M.(1 <= M <= N <= 200);在接下来的N行里,每行包括2个整数,a,b. 在第 i 行,a 代表要攻克第 i 个城堡必须先攻克第 a 个城堡,如果 a = 0 则代表可以直接攻克第 i 个城堡。b 代表第 i 个城堡的宝物数量, b >= 0。当N = 0, M = 0输入结束。
Output
对于每个测试实例,输出一个整数,代表ACboy攻克M个城堡所获得的最多宝物的数量。
Sample Input
3 20 10 20 37 42 20 10 42 17 17 62 20 0
Sample Output
513
Source
HDU 2006-12 Programming Contest
[Submit] [Go Back] [Status]
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int INF=0x3f3f3f3f;int Adj[220],Size;struct E{ int to,next,w;}Edge[44000];void init(){ Size=0; memset(Adj,-1,sizeof(Adj));}void Add_Edge(int u,int v){ Edge[Size].to=v; Edge[Size].next=Adj[u]; Adj[u]=Size++;}int n,m,dp[220][220];void dfs(int f,int u){ for(int i=Adj[u];~i;i=Edge[i].next) { int v=Edge[i].to; if(v==f) continue; dfs(u,v); for(int j=m+1;j>1;j--) { for(int k=0;k<j;k++) { dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[v][k]); } } }}int main(){while(scanf("%d%d",&n,&m)!=EOF){ if(n==0&&m==0) break; init(); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) { int a,b; scanf("%d%d",&a,&b); Add_Edge(a,i); dp[i][1]=b; } dfs(0,0); printf("%d\n",dp[0][m+1]);} return 0;}
1 0
- hdoj(hdu)-1561-the more the better
- HDOJ 1561 The more, The Better
- hdoj 1561 The more, The Better
- HDOJ 1561The more, The Better(树状DP)
- HDOJ 1561 The more, The Better (树形DP)
- HDOJ (HDU) 1561 The more, The Better (树形DP)
- HDOJ 1561 The more, The Better(树形DP)
- HDOJ 题目1561 The more, The Better(树状dp)
- HDOJ The more, The Better 树形DP
- The more, The Better
- The more, The Better
- The more, The Better
- hdu 1561 The more,The better
- hduoj 1561 The more, The Better
- hdu 1561 the more,the better
- Hdu 1561 The more, The Better
- HDU 1561 The more, The Better
- HDU 1561 The more, The Better
- 狼找兔子
- vuforia结合unity3d开发AR的androidAPP总结(三)
- Java学习从菜鸟变大鸟之二 输入输出流(IO)
- C#之DatabaseHelper
- 淺談Raid Cache Memory上應用的問題和實踐
- HDOJ 1561 The more, The Better
- win7与Ubuntu 13.04双系统修改启动项顺序
- android app学习进度
- 软工视频总结
- pat 1018
- 2014年值得关注的10个开源项目
- java语言学习-类和对象1
- 后台配置前台动态显示图片——善良公社
- 单片机数据效验算法【crc】