hdu 6082
这道题一拿过来 对一个熊直接跑完全背包 然后跑 100000 次 完美TLE
其实因为对一个熊跑的时候 下次熊还是会跑的
于是需要对所有的熊直接完全背包预处理
设 dp[i][j] 代表 消灭护甲为 i 血量为 j 的怪兽的最小代价
那么只要O(n) 遍历这些怪兽是否能被消灭即可

/*if you can't see the repayWhy not just work step by steprubbish is relaxedto ljq
*/
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <cmath>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#include <vector>
#include <stdlib.h>
#include <algorithm>
using namespace std;#define dbg(x) cout<<#x<<" = "<< (x)<< endl
#define dbg2(x1,x2) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<endl
#define dbg3(x1,x2,x3) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<" "<<#x3<<" = "<<x3<<endl
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))typedef pair<int,int> pll;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int _inf = 0xc0c0c0c0;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const ll _INF = 0xc0c0c0c0c0c0c0c0;
const ll mod =  (int)1e9+7;ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll ksm(ll a,ll b,ll mod){int ans=1;while(b){if(b&1) ans=(ans*a)%mod;a=(a*a)%mod;b>>=1;}return ans;}
ll inv2(ll a,ll mod){return ksm(a,mod-2,mod);}
void exgcd(ll a,ll b,ll &x,ll &y,ll &d){if(!b) {d = a;x = 1;y=0;}else{exgcd(b,a%b,y,x,d);y-=x*(a/b);}}//printf("%lld*a + %lld*b = %lld\n", x, y, d);/*namespace sgt
{#define mid ((l+r)>>1)#undef mid
}*/
const int MAX_N = 1025;
int a[100025],b[100025],k[MAX_N],p[MAX_N],dp[11][MAX_N];
int main()
{//ios::sync_with_stdio(false);//freopen("a.txt","r",stdin);//freopen("b.txt","w",stdout);int n,m;while(scanf("%d%d",&n,&m)==2){bool flag = true;int mxa = 0,mxb = 0;long long ans = 0;for(int i = 1;i<=n;++i)scanf("%d%d",&a[i],&b[i]),mxa = max(mxa,a[i]),mxb = max(mxb,b[i]);for(int i = 1;i<=m;++i)scanf("%d%d",&k[i],&p[i]);memset(dp,0x3f,sizeof(dp));for(int i = 0;i<=mxb;++i) dp[i][0] = 0;for(int i = 0;i<=mxb;++i){for(int j = 1;j<=m;++j){if(p[j]-i<=0) continue;for(int l = 1;l<=mxa;++l){if(l-(p[j]-i)>=0) dp[i][l] = min(dp[i][l],dp[i][l-(p[j]-i)]+k[j]);else dp[i][l] = min(dp[i][l],dp[i][0]+k[j]);}}}for(int i = 1;i<=n;++i){if(dp[b[i]][a[i]]==inf) flag = false;else ans+=dp[b[i]][a[i]];}if(flag) printf("%lld\n",ans);else printf("-1\n");}//fclose(stdin);//fclose(stdout);//cout << "time: " << (long long)clock() * 1000 / CLOCKS_PER_SEC << " ms" << endl;return 0;
}

【hdu 6082 度度熊与邪恶大魔王 】 完全背包相关推荐

  1. HDU 6082 度度熊与邪恶大魔王 (完全背包)

    度度熊与邪恶大魔王                                                                 Time Limit: 2000/1000 MS ( ...

  2. HDU - 6082 度度熊与邪恶大魔王(背包变式)

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

  3. HDU - 6082——度度熊与邪恶大魔王 (背包+DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6082 思路:dp[i][j]代表打死血量为i,防御力为j的怪兽要用的最少晶石.用背包的方式dp. #i ...

  4. HDU 6082 度度熊与邪恶大魔王(01背包)

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

  5. HDOJ 6082 度度熊与邪恶大魔王

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6082 百度之星2017资格赛的第三题. 自从从集训队退出之后,就再也没有做过题目了,当天晚上突然看到短 ...

  6. [HDU P6082]度度熊与邪恶大魔王

    原题链接 有点意外的DP 其实一开始的思路也是背包 但是思考方向的不对 后来看了题解 就是 DP[i][j]表示在防御力为i的情况下打出j点伤害所需的最小晶石数 枚举魔法的时候 如果直接能打掉就用这招 ...

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

    定义状态dp[i][j][t]代表前i种攻击,当前怪物生命值为j,防御力为t,所需要的最小代价. 利用完全背包的方法很容易得到 (p[i] = 第i种方法的攻击值减去防御值t) dp[i][j][t] ...

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

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

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

    度度熊与邪恶大魔王 Time limit:1000 ms Memory limit:65536 kB Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来.邪恶大 ...

最新文章

  1. CentOS yum 源的配置与使用
  2. linux网络配置和防火墙配置一例
  3. java中nio怎么实现聊天,JAVA-NIO实现聊天室详细代码说明
  4. cma检测_CMA检测方法
  5. greenfoot推箱子游戏_推箱子小游戏V2.0更新
  6. java操作ssdb:set、map、list..
  7. 加入收藏 设为首页 代码:兼容IE和FireFox
  8. C++ Primer 第十三章 拷贝控制
  9. 2020-06-05 原始套接字/AF_PACKET链路层访问
  10. 【一天一个C++小知识】003.C++中的void指针类型
  11. 网站加速--Cache为王篇
  12. spark学习7之IDEA下搭建Spark本地编译环境并上传到集群运行
  13. a4如何打印双面小册子_a4如何打印双面小册子
  14. 一文带你认清运维岗位
  15. 获取设备唯一编号替代IMEI新方案
  16. 失传千年AE特效真经(二)
  17. mysql查询bom清单_Oracle EBS-SQL (BOM-12):BOM清单查询
  18. dva Reducers与Effects的使用介绍
  19. 联发科MT6797/x20开发板设计,MT6797方案定制,MT6797芯片模块资料
  20. Oracle19c数据库如何冷备份,Oracle数据库的备份方法-冷备份(转)

热门文章

  1. 山东省美术生综合分计算器
  2. win10打开计算机闪屏,求助,win10打开程序闪屏
  3. 众昂矿业刘金海认为萤石是未来潜力材料
  4. 微信小程序蓝牙对接热敏打印机
  5. vue实现代码块高亮显示
  6. 去掉浏览器的兼容模式
  7. 7-8 估值一亿的AI核心代码 (20 分) 代码有解析
  8. jquery 监听元素滚动_jQuery在滚动时保持元素在视图中
  9. 古代的监察制度、任职制度和被称为 “中国第五大发明的” 科举制度
  10. 音视频转码技术指南:国内主流云转码服务提供商对比测评