定义状态dp[i][j][t]代表前i种攻击,当前怪物生命值为j,防御力为t,所需要的最小代价。

利用完全背包的方法很容易得到

(p[i] = 第i种方法的攻击值减去防御值t)

dp[i][j][t] = min(dp[i - 1][j][t], dp[i][j - p[i]] + k[i])

可以写成滚动数组的形式。

代码如下:

#include <bits/stdc++.h>using namespace std;
typedef long long int LL;
const int N = 100005;
const int INF = 0x3f3f3f3f;
int n, m;
int a[N], b[N];
int k[1005], p[1005];
LL dp[1005][15];int main()
{//freopen("test.txt", "r", stdin);//freopen("out.txt", "w", stdout);cin.sync_with_stdio(false);while (cin >> n >> m){for (int i=1; i<=n; i++)cin >> a[i] >> b[i];for (int i=1; i<=m; i++)cin >> k[i] >> p[i];memset(dp, 0, sizeof(dp));for (int t=0; t<=10; t++)for (int i=1; i<=m; i++)for (int v=1; v<=1000; v++){int x = p[i] - (t > p[i] ? p[i] : t);if (i == 1){if (x)dp[v][t] = (v / x + (v % x ? 1 : 0)) * k[i];elsedp[v][t] = INF;}elsedp[v][t] = min(dp[v][t], (v >= x ? dp[v - x][t] : 0) + k[i]);}LL ans = 0;for (int i=1; i<=n; i++){if (dp[a[i]][b[i]] < INF)ans += dp[a[i]][b[i]];else{ans = -1;break;}}cout << ans << endl;}return 0;
}

百度之星2017资格赛 1003 度度熊与邪恶大魔王 完全背包相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    #代码: #include<bits/stdc++.h> #define MAXN 1050using namespace std; int n,m; long long int dp[M ...

最新文章

  1. 前端每日实战:108# 视频演示如何用 CSS 和 D3 创作一个抽象的黑白交叠动画
  2. Cannot call sendRedirect() after the response has been committed解决方法
  3. 怎么把mysql转换mssql_MySQL如何转SQL server
  4. Android system server之PackageManagerService详细分析
  5. LBP(局部二值模式)特征提取原理
  6. 平庸技术流,用 WebApi +AngularJS 实现网络爬虫
  7. 如何使柱状图左右展示_Excel多次层柱状图,让数据展示更清晰,简单五步就完成...
  8. TensorFlow tf.data.Dataset
  9. Redis 发布/订阅模式
  10. 个人作业-2016.12.2
  11. CRCNN PCNN
  12. 2012 苹果第三代iPad3(NewPAD)发布会图文实录
  13. h5页面如何预览excel文件_在网页中预览word和excel
  14. 网页制作html怎么居中,网页制作中的水平居中和垂直居中解决方法集合
  15. Geometric tampering estimation by means of a sift-based forensic analysis论文阅读
  16. 跨境贸易EDM邮件使用指南
  17. 32位计算机的内存限额,32位系统支持多大内存 如何完全使用32位4G内存
  18. 财税!2020个人银行账户进账多少会被查?
  19. pytorch中的一维数组,是列向量还是行向量?
  20. html取服务器时间,客户端获取服务器时间记时

热门文章

  1. Swing 入门介绍
  2. Android SDK开发包国内下载地址
  3. 论文精简翻译 Online Deduplication for Databases
  4. ftp客户端与服务器传文件在哪里,中国大学MOOC: FTP在客户端和服务器端传输文件时,使用的是...
  5. 漫谈程序员系列:谁是为加班而生的
  6. java分页展示_Java实现分页展示
  7. win2003 如何更换cd key?
  8. JAVA视频学习笔记-马士兵(七)
  9. 淘宝api开发教程(淘宝API测试地址,参数说明)
  10. Java 集合框架分析:JAVA集合中的一些边边角角的知识