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_二维完全背包问题的更多相关文章
- HDU 2159 二维费用背包问题
一个关于打怪升级的算法问题.. 题意:一个人在玩游戏老是要打怪升级,他愤怒了,现在,还差n经验升级,还有m的耐心度(为零就删游戏不玩了..),有m种怪,有一个最大的杀怪数s(杀超过m只也会删游戏的.. ...
- J. Bottles 二维费用背包问题
http://codeforces.com/contest/730/problem/J 3 4 36 1 90 45 40 其实可以知道,选出多少个瓶子呢?是确定的,当然选一些大的 ...
- UESTC - 878 温泉旅店 二维费用背包问题
http://acm.uestc.edu.cn/#/problem/show/878 设dp[i][j][k]表示在前i个数中,第一个得到的异或值是j,第二个人得到的异或值是k的方案数有多少种. 因为 ...
- C语言-二维背包问题
二维费用背包问题 问题: 二维费用的背包问题是指:对于每件物品,具有两种不同的费用:选择这件物品必须同时付出这两种代价:对于每种代价都有 一个可付出的最大值(背包容量).问怎样选择物品可以得到最大的价 ...
- HDU 2159 FATE (二维背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 解题报告:这题实际上是一个二维的背包问题,也可以由01背包扩展而来,01背包用一维数组,可想而知 ...
- hdu2159FATE(二维背包)
http://acm.hdu.edu.cn/showproblem.php?pid=2159 Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在 ...
- hdu_2159(二维费用背包)
HDU_2159 二维费用背包问题 http://acm.hdu.edu.cn/showproblem.php?pid=2159 #include<cstdio> #include< ...
- 2159 ACM 杭电 杀怪 二维费用的背包+完全背包问题
题意:已知经验值,保留的忍耐度,怪的种数和最多的杀怪数.求进入下一级的最优方案. 思路:用二维费用的背包+完全背包问题 (顺序循环)方法求解 什么是二维费用的背包问题? 问题: 二维费用的背包问题是指 ...
- 【动态规划/二维背包问题】mr355-三角形牧场
应该也是USACO的题目?同样没有找到具体出处. [题目大意] 和所有人一样,奶牛喜欢变化.它们正在设想新造型牧场.奶牛建筑师Hei想建造围有漂亮白色栅栏的三角形牧场.她拥有N(3≤N≤40)块木板, ...
随机推荐
- (转)无效的CurrentPageIndex 值。它必须大于等于0 且小于PageCount 解决方案
第一种: 当以某种条件来查询的时候 其中的结果是以一个结果为条件的datagrid分页 采用字查询到条件下加入如下代码: [c-sharp] view plaincopyprint? protecte ...
- C#委托深入学习
一基础学习: .Net delegate类型:委托跟回调函数是很有渊源的.回调其实跟通知机制有关,考虑这样一个基本的事件序列: a对象调用了b对象的某个方法,希望b对象在其方法完成之时调用a对象的某个 ...
- POJ3662或洛谷1948 Telephone Lines
二分答案+单源最短路 POJ原题链接 洛谷原题链接 显然可以二分答案,检验\(mid\)可以使用最短路来解决. 将大于\(mid\)的边看成长度为\(1\)的边,说明要使用免费升级服务,否则长度为\( ...
- 小话C源码移植
我们知道国外很多程序员工作在linux / unix 环境下,所以有很多优秀的c/c++语言代码不能直接在windows平台进行编译. 很多时候我们只能使用msys, cmake等工具进行模拟环境编译 ...
- JeeSite 4.0
http://jeesite.com/ JeeSite 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot.Spring MVC.Apache Shiro.MyBat ...
- DB2有五种约束
DB2有五种约束: NOT NULL 约束是这样一种规则,它防止在表的一列或多列中输入空值. 唯一约束(也称为唯一键约束)是这样一种规则,它禁止表的一列或多列中出现重复值.唯一键和主键是受支持的唯一约 ...
- Windows 8.1 app 界面设计
大纲: Windows 应用商店应用 UI 详细信息 http://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/dn263191.aspx 快 ...
- 2019.01.21 NOIP训练 可持久化序列【模板】(可持久化treap)
传送门 题意简述:支持在把某个数插入到某版本的第k个位置,删除某版本第k个数,询问第k个数. 思路:用可持久化treaptreaptreap维护区间第kkk个位置的数是啥就可以了. 代码
- 2018.12.30 bzoj3027: [Ceoi2004]Sweet(生成函数+搜索)
传送门 生成函数好题. 题意简述:给出n个盒子,第iii个盒子里有mim_imi颗相同的糖(但不同盒子中的糖不相同),问有多少种选法可以从各盒子中选出数量在[a,b][a,b][a,b]之间的糖果. ...
- C#中string类型是值类型还是引用类型?(转)
出处:https://www.cnblogs.com/dxxzst/p/8488567.html .Net框架程序设计(修订版)中有这样一段描述:String类型直接继承自Object,这使得它成为一 ...