度度熊与邪恶大魔王 (百度之星之资格赛)
度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来。
邪恶大魔王的麾下有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
开始没有想到是dp问题,百度了一下,看见了一个大神的代码,之后才知道是dp问题,果然啊,题目做得少,就是题目感觉不了啊。
代码思路来源:http://blog.csdn.net/lmhacm/article/details/76859456
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>using namespace std;typedef long long ll;struct node
{ll p;ll k;
} a[100005];struct egin
{ll k;ll t;
} b[1005];///晶石排序
bool cmp(egin n,egin b)
{return n.k<b.k;
}///dp[血量][护甲]
ll dp[10005][105];int main()
{int n,m;int i,j,k;ll gongji,maxn,fangyu,ans;while(scanf("%d%d",&n,&m)!=EOF){gongji = maxn = fangyu = ans = 0;for( i=0; i<n; i++){scanf("%lld%lld",&a[i].p,&a[i].k);fangyu = max(fangyu,a[i].k);maxn = max(maxn,a[i].p);}for( i=0; i<m; i++){scanf("%lld%lld",&b[i].k,&b[i].t);gongji = max(gongji,b[i].t);}sort(b,b+m,cmp);///防御大于攻击,就直接输出-1if(gongji<=fangyu){printf("-1\n");continue;}///初始化,for(int i=0; i<=maxn; i++){for(int j=0; j<=10; j++){dp[i][j] = 9999999;}}///开始dpfor( i=0; i<=10; i++){dp[0][i] = 0;for( j=1; j<=maxn; j++){for( k=0; k<m; k++){///防御值之差ll t = b[k].t - i;///打不死的存在if(t<=0) continue;///一炮灭恩仇if(t>=j){dp[j][i] = min(dp[j][i],b[k].k);}else{///没什么是几炮解决不了的恩怨。dp[j][i] = min(dp[j][i],dp[j-t][i]+b[k].k);}}}}///加上杀死输入野怪的晶石。for(int i=0; i<n; i++){ans+=dp[a[i].p][a[i].k];}printf("%lld\n",ans);}return 0;
}
度度熊与邪恶大魔王 (百度之星之资格赛)相关推荐
- 度度熊与邪恶大魔王 百度之星
Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式 ...
- 2017百度之星资格赛:1003. 度度熊与邪恶大魔王
度度熊与邪恶大魔王 Accepts: 1288 Submissions: 7716 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 3 ...
- 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)
度度熊与邪恶大魔王 Time limit:1000 ms Memory limit:65536 kB Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来.邪恶大 ...
- 百度之星资格赛1003 度度熊与邪恶大魔王(dp)--2017
度度熊与邪恶大魔王 Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊 ...
- 2017百度之星 资格赛1003度度熊与邪恶大魔王
1003度度熊与邪恶大魔王 Accepts: 1503 Submissions: 9026 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 3 ...
- 【原创】【百度之星2017资格赛1003】度度熊与邪恶大魔王
度度熊与邪恶大魔王 Accepts: 3107 Submissions: 19305 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 3276 ...
- 度度熊与邪恶大魔王(2017百度之星程序设计大赛 - 资格赛)
度度熊与邪恶大魔王 Accepts: 1764 Submissions: 10691 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- HDU 6082 度度熊与邪恶大魔王 (完全背包)
度度熊与邪恶大魔王 Time Limit: 2000/1000 MS ( ...
- HDU - 6082 度度熊与邪恶大魔王(背包变式)
度度熊与邪恶大魔王 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式,需 ...
- HDOJ 6082 度度熊与邪恶大魔王
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6082 百度之星2017资格赛的第三题. 自从从集训队退出之后,就再也没有做过题目了,当天晚上突然看到短 ...
最新文章
- 冠军奖30万!刘强东搞了个“猪脸识别”比赛,中美两地同时启动(附比赛详细日程及赛题说明)
- Django博客系统项目需求分析
- Android6.0 wakelock深入分析
- Common Lisp 操作Mysql
- centos树莓派版本安装ssh_Raspberry Pi 4B(树莓派4B)远程ssh和jupyter lab环境搭建记录
- 【经典回放】多种语言系列数据结构算法:栈(JavaScript版)
- LeetCode 1586. 二叉搜索树迭代器 II(数组+栈)
- 为什么要破坏JVM的双亲委派模型
- Windows 7软件及游戏的兼容性
- ROS采坑日记(3)----在ROS下 编译ORB_SLAM2时遇到问题:[rosbuild] rospack found package ORB_SLAM2 at ........
- 【优化求解】基于matlab改进的粒子群算法求解混合储能系统容量优化问题【含Matlab源码 1823期】
- 软件开发的11种模式
- C语言中字符串转数字的方法
- C语言打印100以内素数(开根号法)
- MapGIS数据中心是什么?
- 吴伯凡-认知方法论-真真切切的感觉
- 74HC595 的使用
- CentOS-5.6-x86_64 配置SSH无密码登陆
- ccf 考试时间_梳理丨2020年五大学科竞赛考试时间安排出炉!
- 科学家学习天竺葵特性,研制出用水分子来驱动的微型机器人
热门文章
- 亚马逊注册后,将账户改为个人账户的方法
- ai如何置入_ai图片(ai怎么把图片嵌入到图形里)
- 自动驾驶高精地图调研
- 树上战争 HDU-2545
- 亚马逊ec2 ng 文件服务器,在亚马逊EC2云服务器上装完后访问不了
- 清华计算机系超算团队,关注 | 清华大学学生超算团队获国际超级计算机竞赛世界大学生超算竞赛总冠军...
- mysql中on用法_详解mysql中的Using与On的用法
- linux 笔记本合盖不休眠设置
- 五种提高 SQL 性能的方法 [来源:MSDN Johnny Papa]
- A Comprehensive Survey on Graph Neural Networks(图神经网络综合研究)