HDU 6082 度度熊与邪恶大魔王(01背包)
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
Solution
枚举防御力,固定防御力后问题变成普通的01背包,dp[i][j]dp[i][j]表示防御力为jj时杀掉一个血量为ii的怪兽所需的最少晶石数量,答案即为∑i=1ndp[a[i]][b[i]]\sum\limits_{i=1}^{n}dp[a[i]][b[i]]
Code
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
#define INF 2e9
#define maxn 100005
#define maxm 1005
int n,m,a[maxn],b[maxn],k[maxm],p[maxm],dp[maxm][11];
int main()
{
while(~scanf("%d%d",&n,&m))
{ int ma=0,mb=0;
for(int i=1;i<=n;i++)
{ scanf("%d%d",&a[i],&b[i]);
ma=max(ma,a[i]),mb=max(mb,b[i]);
}
int mp=0;
for(int i=1;i<=m;i++)
{ scanf("%d%d",&k[i],&p[i]);
mp=max(mp,p[i]);
}
if(mp<=mb)
{ printf("-1\n");
continue;
}
for(int i=0;i<=mb;i++)
{ dp[0][i]=0;
for(int j=1;j<=ma;j++)
{ dp[j][i]=INF;
for(int l=1;l<=m;l++)
if(p[l]>i)
{ if(p[l]-i>=j)dp[j][i]=min(dp[j][i],k[l]);
else dp[j][i]=min(dp[j][i],dp[j-(p[l]-i)][i]+k[l]);
}
}
}
ll ans=0;
for(int i=1;i<=n;i++)ans+=dp[a[i]][b[i]];
printf("%lld\n",ans);
}
return 0;
}
HDU 6082 度度熊与邪恶大魔王(01背包)相关推荐
- HDU 6082 度度熊与邪恶大魔王 (完全背包)
度度熊与邪恶大魔王 Time Limit: 2000/1000 MS ( ...
- HDU - 6082 度度熊与邪恶大魔王(背包变式)
度度熊与邪恶大魔王 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式,需 ...
- HDU - 6082——度度熊与邪恶大魔王 (背包+DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6082 思路:dp[i][j]代表打死血量为i,防御力为j的怪兽要用的最少晶石.用背包的方式dp. #i ...
- 【hdu 6082 度度熊与邪恶大魔王 】 完全背包
hdu 6082 这道题一拿过来 对一个熊直接跑完全背包 然后跑 100000 次 完美TLE 其实因为对一个熊跑的时候 下次熊还是会跑的 于是需要对所有的熊直接完全背包预处理 设 dp[i][j] ...
- HDOJ 6082 度度熊与邪恶大魔王
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6082 百度之星2017资格赛的第三题. 自从从集训队退出之后,就再也没有做过题目了,当天晚上突然看到短 ...
- [HDU P6082]度度熊与邪恶大魔王
原题链接 有点意外的DP 其实一开始的思路也是背包 但是思考方向的不对 后来看了题解 就是 DP[i][j]表示在防御力为i的情况下打出j点伤害所需的最小晶石数 枚举魔法的时候 如果直接能打掉就用这招 ...
- 百度之星2017资格赛 1003 度度熊与邪恶大魔王 完全背包
定义状态dp[i][j][t]代表前i种攻击,当前怪物生命值为j,防御力为t,所需要的最小代价. 利用完全背包的方法很容易得到 (p[i] = 第i种方法的攻击值减去防御值t) dp[i][j][t] ...
- 百度之星资格赛1003 度度熊与邪恶大魔王(dp)--2017
度度熊与邪恶大魔王 Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊 ...
- 2017百度之星资格赛:1003. 度度熊与邪恶大魔王
度度熊与邪恶大魔王 Accepts: 1288 Submissions: 7716 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 3 ...
最新文章
- nginx源码分析--内存对齐处理
- 专用计算机教室设备,计算机教室专用规章制度
- 小豆包的学习之旅:里程计运动模型
- 电脑安全注意事项_别墅装修设计注意事项 别墅装修的陷阱有哪些
- “极品时刻表”被挂马 已有6万网民遭攻击
- stm32单片机屏幕一直闪_用STM32做一个微型掌上示波器项目——终于鼓起在大牛前献丑的无比勇气...
- PHP 常见header 状态
- 强悍的 Linux —— 强悍的 ls
- 【Spring笔记】使用javaconfig配置
- 计算机软考笔试知识点,计算机软考考试必备知识点:关键链法
- xp系统计算机蓝屏,xp系统电脑一直蓝屏重启循环的原因和解决方法
- 【开心小丫头】滚滚长江
- matlab ode45的使用
- 新电脑win10系统的一个BUG
- python的requests.get()方法获取百度搜索结果页面失败的问题
- 二维码20项应用模式大盘点
- java中的<<符号是什么意思
- Android 跳过开机界面 直接软件自启动 Android做自己的桌面 替代原生桌面 Android开发自己桌面
- 编制程序完成下述任务:接受两个数,一个为用 户一年期定期存款金额,一个为按照百分比格式表示的利率;程序计算一年期满后本金与利息总额。说明:(1)存款金额以人民币元为单位,可能精确到分; (2)输入利率
- real time robust malicious traffic detection via frequency domain analysis记录一下
热门文章
- igh ethercat应用层代码分析
- 牛一网ecshop家电数码模板(仿易迅网)for ecshop 2.7.3
- python 3爬取 12306余票
- 【学习笔记】关于苹果Safari浏览器不支持sessionStorage的问题
- openh264 Windows 平台x64版本编译
- 微信公众号 H5 jssdk 分享卡片功能实现(亲测使用)
- LeetCode--路径总和III
- Android studio 集成Unity
- java计算机毕业设计体育城场地预定系统前台源码+系统+数据库+lw文档+mybatis+运行部署
- 关注点云 专栏及博主