HDU2159_二维完全背包问题

输入有:经验,忍耐度,怪物种数,限制杀怪数 每一种怪物对应获得的经验值和消耗的耐久值

输出:剩下的最大忍耐度

限制:忍耐度,杀怪个数

在这里把忍耐度看成背包的容量,杀怪个数限制作为第二维

dp[i][j]表示在背包容量为i的时候,放了j件物品所产生的价值

接下来就是循环问题

先遍历每一个物品(怪物)  i

  然后遍历体积(耐久值)正序遍历——完全背包   j

    然后遍历杀怪的个数(正序遍历)完全背包   k

      得出dp[j][k]  = max(dp[j][k],dp[j-cost[i]][k-1] + data[i]);

      在这里要记录一下,要保留最大的耐久值,我们就要存储,当dp[j][k]所产生的经验值大于等于升级所需要的经验值时小号的最小耐久值

最后一减就ok了

#include <iostream>
#include <cstdio>
#include <string.h>
#include <cmath>
#define inf 0xffffff
using namespace std;
const int maxn = 200;
int dp[maxn][maxn];//dp[i][j]表示忍耐度为i的情况下杀j个怪兽所获得的经验
int data[maxn];
int cost[maxn];
int main()
{
int e,V,n,limit;
while(~scanf("%d%d%d%d",&e,&V,&n,&limit))
{
for(int i = 0;i < n;i++)
scanf("%d %d",&data[i],&cost[i]);
memset(dp,0,sizeof(dp));
int res = inf;
for(int i = 0;i < n;i++)//遍历物品
for(int j = cost[i];j <= V;j++)//完全背包层层递推
for(int k = 1;k <= limit;k++)//不管当前这只,管当前这只
{
dp[j][k] = max(dp[j][k],dp[j-cost[i]][k-1] + data[i]);
if(dp[j][k] >= e)res = min(res,j);
}
if(res == inf)cout<<-1<<endl;
else cout<<V - res<<endl;
}
return 0;
}

HDU2159_二维完全背包问题的更多相关文章

  1. HDU 2159 二维费用背包问题

    一个关于打怪升级的算法问题.. 题意:一个人在玩游戏老是要打怪升级,他愤怒了,现在,还差n经验升级,还有m的耐心度(为零就删游戏不玩了..),有m种怪,有一个最大的杀怪数s(杀超过m只也会删游戏的.. ...

  2. J. Bottles 二维费用背包问题

    http://codeforces.com/contest/730/problem/J 3 4    36    1 90   45   40 其实可以知道,选出多少个瓶子呢?是确定的,当然选一些大的 ...

  3. UESTC - 878 温泉旅店 二维费用背包问题

    http://acm.uestc.edu.cn/#/problem/show/878 设dp[i][j][k]表示在前i个数中,第一个得到的异或值是j,第二个人得到的异或值是k的方案数有多少种. 因为 ...

  4. C语言-二维背包问题

    二维费用背包问题 问题: 二维费用的背包问题是指:对于每件物品,具有两种不同的费用:选择这件物品必须同时付出这两种代价:对于每种代价都有 一个可付出的最大值(背包容量).问怎样选择物品可以得到最大的价 ...

  5. HDU 2159 FATE (二维背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 解题报告:这题实际上是一个二维的背包问题,也可以由01背包扩展而来,01背包用一维数组,可想而知 ...

  6. hdu2159FATE(二维背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=2159 Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在 ...

  7. hdu_2159(二维费用背包)

    HDU_2159 二维费用背包问题 http://acm.hdu.edu.cn/showproblem.php?pid=2159 #include<cstdio> #include< ...

  8. 2159 ACM 杭电 杀怪 二维费用的背包+完全背包问题

    题意:已知经验值,保留的忍耐度,怪的种数和最多的杀怪数.求进入下一级的最优方案. 思路:用二维费用的背包+完全背包问题 (顺序循环)方法求解 什么是二维费用的背包问题? 问题: 二维费用的背包问题是指 ...

  9. 【动态规划/二维背包问题】mr355-三角形牧场

    应该也是USACO的题目?同样没有找到具体出处. [题目大意] 和所有人一样,奶牛喜欢变化.它们正在设想新造型牧场.奶牛建筑师Hei想建造围有漂亮白色栅栏的三角形牧场.她拥有N(3≤N≤40)块木板, ...

随机推荐

  1. How to update XENTRY Connect C5 software with .iso file

    07.2018 Xentry Mercedes SD Connect c5 software update manual for newbies: Important: If you have XDO ...

  2. BZOJ 2594 水管局长 - LCT 维护链信息

    Solution 由于链信息不好直接维护, 所以新建一个节点存储边的权值, 并把这个节点连向 它所连的节点 $u$, $v$ $pushup$中更新维护的 $mx$ 指向路径上权值最大的边的编号. 由 ...

  3. NC 6系分配组织方法

    分配客户的方法 String[] customer = { cuVO.getPk_customer() }; ICustAssignService cs = NCLocator.getInstance ...

  4. 没加载redis类,却可以实例化redis

    原因:phpinfo里面已有redis扩展

  5. Creating Your Own PHP Helper Functions In Laravel

    By Hamza Ali LAST UPDATED AUG 26, 2018  12,669 104 Laravel provides us with many built-in helper fun ...

  6. 测试 Open Live Writer

    我要试试. 看看图片如何: 这是从电脑端上传的一个例子,如果编辑器里可以支持复制粘贴图片就好了. Open Live Writer 发布以后,还可在保存在本地,想起来的时候就修改一下. 再美化一下. ...

  7. 轻博客类Web原型制作分享——Tumblr

    Tumblr(汤博乐)成立于2007年,是目前全球最大的轻博客网站,也是轻博客网站的始祖. Tumblr是一种介于传统博客和微博之间的全新媒体形态,既注重表达,又注重社交,而且注重个性化设置,成为当前 ...

  8. vue组件中this和$el指向

    示例代码为element ui 源码的select组件源码 控制台输出: 结论: this指向组件的实例. $el指向当前组件的DOM元素.

  9. NETSHARP的JAVA开发环境配置

    一:JAVA配置 1. netsharp使用java1.8/1.7版本,本文使用1.8版本 2.jdk下载地址:http://www.oracle.com/technetwork/java/javas ...

  10. random库的常见用法

    import random print( random.randint(1,10) ) # 产生 1 到 10 的一个整数型随机数 print( random.random() ) # 产生 0 到 ...