题目:

Problem Description

度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来。

邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力。

度度熊一共拥有m种攻击方式,第i种攻击方式,需要消耗k[i]的晶石,造成p[i]点伤害。

当然,如果度度熊使用第i个技能打在第j个怪兽上面的话,会使得第j个怪兽的生命值减少p[i]-b[j],当然如果伤害小于防御,那么攻击就不会奏效。

如果怪兽的生命值降为0或以下,那么怪兽就会被消灭。

当然每个技能都可以使用无限次。

请问度度熊最少携带多少晶石,就可以消灭所有的怪兽。

Input

本题包含若干组测试数据。

第一行两个整数n,m,表示有n个怪兽,m种技能。

接下来n行,每行两个整数,a[i],b[i],分别表示怪兽的生命值和防御力。

再接下来m行,每行两个整数k[i]和p[i],分别表示技能的消耗晶石数目和技能的伤害值。

数据范围:

1<=n<=100000

1<=m<=1000

1<=a[i]<=1000

0<=b[i]<=10

0<=k[i]<=100000

0<=p[i]<=1000

Output

对于每组测试数据,输出最小的晶石消耗数量,如果不能击败所有的怪兽,输出-1

Sample Input
1 2
3 5
7 10
6 8
1 2
3 5
10 7
8 6

Sample Output
6
18

思路:这道题也是坑,WA了好多次,做了一下午...建立两个数组,dp[i][j]表示表示消灭防御为j生命值为i的怪物需要消耗多少水晶,num[i][j]表示表示防御为j生命值为i的怪物有多少只。利用dp不断更新找到消耗水晶数的最小值。至于不能击败所有的怪兽,只需考虑不破防的情况就行了(最大攻击力<=最小防御力 or 最大攻击力<=最大防御力--->最大攻击力<=最大防御力)。由于数据问题,选用__int64或long long输出答案为佳,中间也可以加一些剪枝来节省时间。。。

CODE:

#include<bits/stdc++.h>
using namespace std;
__int64 dp[1005][11],num[1005][11],sum;
int sk[1005];
struct node
{int k,p;
}q[1005];
int main()
{int n,m,i,j,l,a,b,len;while(~scanf("%d%d",&n,&m)){memset(dp,0,sizeof(dp));memset(num,0,sizeof(num));memset(sk,0,sizeof(sk));int min_b=15,max_a=0,max_b=0,max_p=0;for(i=0;i<n;i++){scanf("%d%d",&a,&b);num[a][b]++;min_b=min(min_b,b);max_a=max(max_a,a);max_b=max(max_b,b);}len=0;while(m--){scanf("%d%d",&a,&b);if(b<=min_b) continue;if(sk[b]&&sk[b]<=a) continue;sk[b]=a;q[len].k=a;q[len++].p=b;max_p=max(max_p,b);}m=len;if(max_p<=max_b){puts("-1");continue;}for(l=0;l<=10;l++){for(i=1;i<=max_a;i++){__int64 cnt=-1;for(j=0;j<m;j++){int op=q[j].p-l;if(op<=0)continue;if(i-op<=0){if(cnt==-1||cnt>q[j].k) cnt=q[j].k;continue;}if(cnt==-1||cnt>dp[i-op][l]+q[j].k) cnt=dp[i-op][l]+q[j].k;}dp[i][l]=cnt;}}sum=0;for(i=1;i<=max_a;i++) for(j=0;j<=10;j++) sum+=dp[i][j]*num[i][j];printf("%I64d\n",sum);}return 0;
}

2017百度之星程序设计大赛 - 资格赛:1003 度度熊与邪恶大魔王相关推荐

  1. 【2017百度之星程序设计大赛 - 资格赛】 度度熊与邪恶大魔王

    [Link]: [Description] [Solution] 因为技能的效果和花费是不会变的; 所以,考虑预处理m个技能达成一定的伤害最少需要的魔法石数量; 可以把对这m个技能做一个类似的完全背包 ...

  2. 2017百度之星 资格赛1003度度熊与邪恶大魔王

    1003度度熊与邪恶大魔王 Accepts: 1503 Submissions: 9026 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 3 ...

  3. 2017百度之星程序设计大赛 - 资格赛【1001 Floyd求最小环 1002 歪解(并查集),1003 完全背包 1004 01背包 1005 打表找规律+卡特兰数】...

    度度熊保护村庄 Accepts: 13 Submissions: 488 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3276 ...

  4. 2017百度之星程序设计大赛-资格赛

    ACM模版 忙里偷闲的写了几道题,这两天好忙啊--只过一道题就能通过资格赛,所以并没有什么签到题--但是的确有的题被我想难了~~~ 1002-度度熊的王国战略 >>>并查集<& ...

  5. 2017百度之星资格赛—1003度度熊与邪恶大魔王

    其他题目就不发博客了(有些也没做出来!!),感觉这次百度之星资格赛题目数据有毒,吐槽,其他题目也不好说,感觉这个题目正常点. 这个题目我当时想到的就是动态规划,但是评论中很多人说是贪心,我一直不理解, ...

  6. 度度熊与邪恶大魔王(2017百度之星程序设计大赛 - 资格赛)

    度度熊与邪恶大魔王  Accepts: 1764  Submissions: 10691  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: ...

  7. 2017百度之星资格赛 1003 度度熊与邪恶大魔王

    本题我们可以类比背包 背包dp[i][j] 表示再有i个物品下j个空间所获得的最大价值 本题dp[i][j] 可以表示干掉i个血量j个防御力下的最小花费 我们看其实我们就是在不同血量之间转移 如果当前 ...

  8. 百度之星资格赛1003 度度熊与邪恶大魔王(dp)--2017

    度度熊与邪恶大魔王 Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊 ...

  9. 百度之星2017资格赛1003 度度熊与邪恶大魔王

    Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式 ...

最新文章

  1. 【转】CEC文件详解
  2. [Android Traffic] 使用缓存来避免重复的下载
  3. pc构件生产线及设备_PC构件成组立模生产线
  4. Linux系统——架构浅析
  5. reloaddata 跳动_纸跳动像素
  6. Page.ClientScript.RegisterArrayDeclaration
  7. [转载] opengl能做什么_python能做什么
  8. linux web部署命令简单记录
  9. JS layer时间组件laydate的回调中重置清除选择无效的问题
  10. MMI、SS、USSD介绍
  11. 谷歌浏览器安装插件的方法
  12. 每个星座的出生日期php,php根据出生日期计算年龄 生肖 星座程序
  13. Lombok requires enabled annotation processing
  14. CSS 3之 文本样式(三)
  15. RC电路的充放过程C语言实现,RC电路的瞬态和稳态过程
  16. 跨平台跨端的登录流程及其安全设计
  17. 电脑网易云音乐,网易云音乐的话题区到底有多魔性?
  18. 常见的爬虫error以及解决方法
  19. 高校借助电子签章推动学生入网缴费凭证、科研项目拨款单在线签
  20. Fortran编程快速入门

热门文章

  1. Q10:调试QTI综测源码
  2. 版本控制之Git---简介
  3. uniapp 设置 style 动态背景
  4. Apache IoTDB 毕业两周年庆典|限量版纪念T恤“点击”就送~
  5. 数据分析技能点-Word使用的40个常规操作
  6. java银行自助系统结构图_java毕业设计_springboot框架的基于框架的银行大厅自助信息系统...
  7. 垂直行业网站destoon系统如何开启伪静态urlrewrite
  8. 9.2NOIP模拟赛
  9. [时序波动关联]模型CoFLUX论文要点整理
  10. 如何在Adobe XD中创建酒店预订UI设计