1003 度度熊与邪恶大魔王
来源:互联网 发布:nginx 去除版本号 编辑:程序博客网 时间:2024/06/10 14:13
度度熊与邪恶大魔王
Accepts: 2395
Submissions: 14900
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 32768/32768 K (Java/Others)
618
DP思路去做,构造状态方程,dp[i][j]为攻击护甲为j,能打出血量为i的最小消耗晶石值
因为所给数据的范围中,只有b[i](护甲值)最小,所以我们可以利用这一点去遍历
当技能p[i]<=当前护甲值,说明打不出伤害值,我们就把他舍弃,不用管它;
当技能p[i]>当前护甲值,伤害值hurt则为p[i]-当前护甲值
如果hurt>当前生命值,则只需要这一个技能就能够打到怪兽,并且让dp记录消耗晶石最小的当前技能
如果hurt<当前生命值,,那么dp[][]记录最小的未打出这一次伤害值的前一次dp[][]值+此次技能消耗的晶石
k[u]为第u个技能消耗的晶石值;
eg:还是根据最上方对dp数组的定义,如果hurt>hp,dp[i][j]=min{k[u]},如果hurt<hp,dp[i][j]=min{dp[i-hurt][j]+k[u]};
#include <iostream>#include <cstring>#include <stack>#include <cstdio>#include <cmath>#include <queue>#include <algorithm>#include <vector>#include <set>#include <map>typedef long long LL;const double eps=1e-8;const double PI=acos(-1.0);using namespace std;LL dp[1005][15];LL a[100005],b[100005];LL p[1005],k[1005];LL max(LL a,LL b){ return a>b?a:b;}LL min(LL a,LL b){ return a<b?a:b;}int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { LL mdef=0,mhp=0;//最大护甲值,最大生命值 memset(dp,0,sizeof(dp)); for(int i=0; i<n; i++) { scanf("%I64d%I64d",&a[i],&b[i]); mhp=max(mhp,a[i]); mdef=max(mdef,b[i]); } LL mhit=0;//技能的最大伤害值 for(int i=0; i<m; i++) { scanf("%I64d%I64d",&k[i],&p[i]); mhit=max(mhit,p[i]); } if(mhit<=mdef) { printf("-1\n"); continue; } for(int i=0; i<=10; i++)//护甲值0-10遍历 { for(int j=1; j<=mhp; j++)// { dp[j][i]=1e18; for(int u=0; u<m; u++) { int hurt=p[u]-i; if(hurt>=j) dp[j][i]=min(dp[j][i],k[u]); else if(hurt>0) dp[j][i]=min(dp[j][i],dp[j-hurt][i]+k[u]); } } } long long ans=0; for(int i=0;i<n;i++) ans+=dp[a[i]][b[i]];//ans记录所有出现的i生命值j护甲值被消灭所需要的晶石数 printf("%I64d\n",ans); } return 0;}
阅读全文
0 0
- 1003 度度熊与邪恶大魔王
- 度度熊与邪恶大魔王
- 度度熊与邪恶大魔王
- 度度熊与邪恶大魔王
- 度度熊与邪恶大魔王
- 度度熊与邪恶大魔王
- 度度熊与邪恶大魔王
- 度度熊与邪恶大魔王
- 度度熊与邪恶大魔王
- 度度熊与邪恶大魔王
- 度度熊与邪恶大魔王
- 百度之星1003 度度熊与邪恶大魔王
- 百度之星资格赛1003 度度熊与邪恶大魔王
- 2017百度之星1003度度熊与邪恶大魔王
- 百度之星1003 度度熊与邪恶大魔王 DP
- 百度之星1003度度熊与邪恶大魔王
- 1003度度熊与邪恶大魔王(完全背包)
- 度度熊与邪恶大魔王(DP)
- 1002 度度熊的王国战略
- HTML5 SVG API及实例 SVG的特点
- linux初学者-磁盘分区方式篇
- [PAT乙级]1068. 万绿丛中一点红(20)
- UI 一一 XIB和代码创建程序的对比
- 1003 度度熊与邪恶大魔王
- HDU
- IntelliJ
- 1059. C语言竞赛(20)
- 2017年08月05日
- Java 并发编程笔记(一)
- python : Windows WiFi wlan list
- Linux 高级编程
- linux初学者-swap分区篇