HDU 3008 Warcraft (DP 背包)
来源:互联网 发布:角度尺软件 编辑:程序博客网 时间:2024/05/23 18:33
题目开始时,丝毫没有想法,其实,变量多可以找到其中重要的状态,可以找到其 状态转移方程
dp[i][j] --------- i表示, 第i秒, j表示 此时hero的魔法值 ,其值表示,当前的量可以对monster造成的最大伤害
可以近似看成完全背包问题
dp[i][j]= max( dp[i][j], dp[i-1][j-a[k]]+b[k] )
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#define PI acos(-1.0)#define max(a,b) (a)>(b)? (a):(b)#define min(a,b) (a)>(b)? (b):(a)#define INT_MIN -0x7FFFFFFF#define INT_MAX 0x7FFFFFFFint n,t,q;int a[110],b[110];int dp[110][110];// time and mofaint main(){ // freopen("in.txt","r",stdin); int i,j,k; while(scanf("%d%d%d",&n,&t,&q),n|| t|| q) { for(i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]); a[0]=0;b[0]=1; int ti; int flag=0; if(100%q) ti=100/q+1; else ti=100/q; memset(dp,0,sizeof(dp)); for(i=1;i<=ti;i++)//time { for(j=0;j<=100;j++) { int mo=j; mo+=t; if(mo>100) mo=100; for(k=0;k<=n;k++)//技能数 { if(j+a[k]<=100)//不可能由超过100魔法的状态得来 { dp[i][mo]=max(dp[i][mo],dp[i-1][j+a[k]]+b[k]);//状态转移方程,注意前后魔法值的对应 } } if(dp[i][mo]>=100) { flag=1; printf("%d\n",i);break; } } if(flag) break;//不加这个语句 WA到死 } if(!flag) { printf("My god\n"); } //for(i=1;i<=100;i++) printf("%d``\n",dp[4][i]); } return 0;}
- HDU 3008 Warcraft (DP 背包)
- hdu 3008 Warcraft (dp)
- HDU 3008 Warcraft (DP)
- HDU 3008 Warcraft (DP)
- hdu 3008 Warcraft(dp)
- 【DP】HDU-3008 Warcraft
- HDU 3008 Warcraft(dp)
- HDU 3008 Warcraft DP .
- HLG 1053 Warcraft III(背包DP)
- hdu 3008 Warcraft(基础dp题)
- HDU 3008 动态规划(DP) Warcraft
- hdu 3008 Warcraft,第一道dp题。。。
- HDU 3008 Warcraft(DP之状态的保存)
- HDU 3008 Warcraft (动态规划)【打怪类】
- hdu 3008 Warcraft
- HDU 3008 Warcraft
- hdu 3008 Warcraft
- HDU 3008(Warcraft)
- 就是喜欢这张配图,没什么好解释的。。。
- iOS: NSDictionary的方法isEqualToDictionary:
- rose画用例图折线变直线
- iOS: NSDictionary的方法keyEnumerator
- ASP学习
- HDU 3008 Warcraft (DP 背包)
- Grails构建基于RBAC的权限管理平台(一)
- Use a layout_width of 0dip instead of fill_parent for better performance
- Winform 模拟Session
- OpenGL进阶(十) - obj文件的导入
- iOS: NSDictionary的方法keysSortedByValueUsingComparator:
- 小时代
- 2013苹果获奖
- C++ 之 STL