hdu 6082 - 完全背包,打表。
2017-08-06 15:02:50 | Accepted | 1003 | 187 MS | 2168 K | G++ | redips |
对背包有了进一步的认识
-------------------------------------------------------------------
题目描述:
度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来。
邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力。
度度熊一共拥有m种攻击方式,第i种攻击方式,需要消耗k[i]的晶石,造成p[i]点伤害。
当然,如果度度熊使用第i个技能打在第j个怪兽上面的话,会使得第j个怪兽的生命值减少p[i]-b[j],当然如果伤害小于防御,那么攻击就不会奏效。
如果怪兽的生命值降为0或以下,那么怪兽就会被消灭。
当然每个技能都可以使用无限次。
请问度度熊最少携带多少晶石,就可以消灭所有的怪兽。
输入:
第一行两个整数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
----------------------------------------------------------------------------------------
注意a只有1k,b只有10,而n为100000,所以需要打表。
- #include <set>
- #include <map>
- #include <stack>
- #include <queue>
- #include <cmath>
- #include <vector>
- #include <string>
- #include <cstdio>
- #include <cstring>
- #include <cstdlib>
- #include <iostream>
- #include <algorithm>
- #define MAX(a,b) ((a)>=(b)?(a):(b))
- #define MIN(a,b) ((a)<=(b)?(a):(b))
- #define OO 0x0fffffff
- typedef long long LL;
- using namespace std;
- const int N = ;
- const int M = ;
- int A[N],B[N];
- int K[M],P[M];
- int table[][M];
- int dp[M];
- int main(){
- int n,m;
- int a,b;
- while(scanf("%d%d",&n,&m)!=EOF){
- for(int i=;i<n;i++) scanf("%d%d",A+i,B+i);
- for(int i=;i<m;i++) scanf("%d%d",K+i,P+i);
- memset(table,,sizeof(table));
- for(int defend=;defend<=;defend++){
- int *dp = table[defend];
- dp[] = ;
- for(int id=;id<m;id++){
- int value = P[id] - defend;
- if(value<=) continue;
- for(int life=;life<=;life++){
- int base = ((life-value)>=)?(dp[life-value]):;
- dp[life] = MIN(dp[life],base+K[id]);
- }
- }
- }
- LL ans = ;
- bool flag = true;
- for(int i=;i<n;i++) {
- int tmp = table[B[i]][A[i]];
- if(tmp==) {flag=false;break;}
- ans += tmp;
- }
- if(flag) printf("%lld\n",ans);
- else puts("-1");
- }
- return ;
- }
hdu 6082 - 完全背包,打表。的更多相关文章
- HDU 1011 树形背包(DP) Starship Troopers
题目链接: HDU 1011 树形背包(DP) Starship Troopers 题意: 地图中有一些房间, 每个房间有一定的bugs和得到brains的可能性值, 一个人带领m支军队从入口(房 ...
- hdu 5445 多重背包
Food Problem Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)To ...
- hdu 1203 01背包 I need a offer
hdu 1203 01背包 I need a offer 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1203 题目大意:给你每个学校得到offe ...
- HDU - 6082 度度熊与邪恶大魔王(背包变式)
度度熊与邪恶大魔王 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式,需 ...
- HDU 1712 分组背包
ACboy needs your help Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- hdu 2191 多重背包 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
http://acm.hdu.edu.cn/showproblem.php?pid=2191 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...
- hdu 2844 多重背包coins
http://acm.hdu.edu.cn/showproblem.php?pid=2844 题意: 有n个硬币,知道其价值A1.....An.数量C1...Cn.问在1到m价值之间,最多能组成多少种 ...
- hdu 1864 01背包 最大报销额
http://acm.hdu.edu.cn/showproblem.php?pid=1864 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...
- hdu 2955 01背包
http://acm.hdu.edu.cn/showproblem.php?pid=2955 如果认为:1-P是背包的容量,n是物品的个数,sum是所有物品的总价值,条件就是装入背包的物品的体积和不能 ...
随机推荐
- Five Invaluable Techniques to Improve Regex Performance
Regular expressions are powerful, but with great power comes great responsibility. Because of the wa ...
- asp.net中Server.MapPath的使用
http://www.studyofnet.com/news/184.html 本文导读:Server.MapPath()的全名是System.Web.HttpContext.Current.Se ...
- 博客移至 GitHub
新博客地址: github.com/FatliTalk/blog
- idea报错:Please, configure Web Facet first!
https://blog.csdn.net/handsomepig123_/article/details/87257689 转载
- EM_LGH CF965D Single-use Stones 思维_推理
Code: #include<cstdio> #include<algorithm> using namespace std; const int maxn = 1000000 ...
- 在用HTML+css写页面中遇到的问题
一.清除浮动. (1)verflow:hidden;这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是很 了解.一提到清除浮动,我们就会 ...
- 分清encodeURIComponent encodeURI 和 escape
encodeURIComponent encodeURI escape 目的:这三个函数的作用都是让一段字符串在所有电脑(所有国家区域语言)上可读. escape对字符串进行处理: encodeURI ...
- Module build failed: Module failed because of a eslint warning
eslint 设置 warning 级别,在 开发编译失败的原因,报错如下: F:\vue-mobile-skeleton>npm run dev > byhealth@1.0.0 dev ...
- BZOJ 2244 [SDOI2011]拦截导弹 (三维偏序CDQ+线段树)
题目大意: 洛谷传送门 不愧为SDOI的duliu题 第一问?二元组的最长不上升子序列长度?裸的三维偏序问题,直接上$CDQ$ 由于是不上升,需要查询某一范围的最大值,并不是前缀最大值,建议用线段树实 ...
- code-reading-notes--libyang-1
API struct lyd_node * lyd_parse_xml(struct ly_ctx *ctx, struct lyxml_elem **root, int options, ...) ...