杭电 2159 fate(二维背包费用问题)
FATE
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 15224 Accepted Submission(s): 7203
1 1
10 10 1 9
1 1
9 10 2 10
1 1
2 2
题目大意:中文题目,就不说大意了………………
解题思路:对于这道题来说,背包中放的是经验,因此用耐力和杀怪的数量作为标准,当所得经验已经足够升级的时候就跳出循环。 我觉的可以理解为在完全背包的问题上限制了完全背包的数量,有一点多重背包的感觉,但因为所有的限制是有限的,所以用循环就不错感觉。所以就用了三层循环。
核心代码:
dp[i][l]=max(dp[i][l],dp[i-w[j]][l-1]+v[j]);//选择不打 和打 打的话就腾出这类怪物的耐久和可以打的怪物数量
附上代码:
#include <iostream>
#include<math.h>
#include <iomanip>
#include<cstdio>
#include<string>
#include<map>
#include<vector>
#include<list>
#include<algorithm>
#include<stdlib.h>
#include<iterator>
#include<sstream>
#include<string.h>
#include<stdio.h>
using namespace std;
#define maxn 150
int dp[maxn][maxn];// dp[i][j] 表示在 i的忍耐度 j的刷怪范围
int v[maxn],w[maxn];//分别 第i种怪物 的经验和消耗的耐久 int main()
{
int n,m,k,s;//经验 忍耐 怪物的种类 最多少怪物数量
int i,j,l;
while(cin>>n>>m>>k>>s)
{
int flag=;
memset(dp,,sizeof(dp));
for(i=;i<=k;i++)
{
cin>>v[i]>>w[i];
} for(i=;i<=m;i++)//外层表示耐久
{
for(j=;j<=k;j++)//表示怪物种类
{
for(l=;l<=s;l++)//限制了个数
{
if(w[j]<=i)//如果消耗比耐久少的话
{
dp[i][l]=max(dp[i][l],dp[i-w[j]][l-]+v[j]);//选择不打 和打 打的话就腾出这类怪物的耐久和可以打的怪物数量
} }
}
if(dp[i][s]>=n)
{
cout<<m-i<<endl;
flag=;
break;
}
}
if(flag==)
{
cout<<"-1"<<endl;
} }
return ;
}
杭电 2159 fate(二维背包费用问题)的更多相关文章
- HDU 2159 FATE (二维背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 解题报告:这题实际上是一个二维的背包问题,也可以由01背包扩展而来,01背包用一维数组,可想而知 ...
- HDU 2159 FATE (二维背包)
题意:中文题. 析:dp[i][j] 已经杀了 i 个怪兽,已经用了 j 体积,所能获得的最大经验值,这个和一维的差不多,只是加一维而已. 代码如下: #pragma comment(linker, ...
- 2159 ACM 杭电 杀怪 二维费用的背包+完全背包问题
题意:已知经验值,保留的忍耐度,怪的种数和最多的杀怪数.求进入下一级的最优方案. 思路:用二维费用的背包+完全背包问题 (顺序循环)方法求解 什么是二维费用的背包问题? 问题: 二维费用的背包问题是指 ...
- hdu 2159 FATE (二维完全背包)
Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务.久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级.现 ...
- hdu2159 Fate 二维背包
#include <cstring> #include <string> #include <cstdio> #include <cmath> #inc ...
- 二维背包(钟神想要的)(不是DP)
[问题描述] 背包是个好东西,希望我也有.给你一个二维的背包,它的体积是? × ?.现在你有一些大小为1× 2和1×3的物品,每个物品有自己的价值.你希望往背包里面装一些物品,使得它们的价值和最大,问 ...
- hdu 4501 小明系列故事——买年货_二维背包
题目:你可以有v1元,v2代金券,v3个物品免单,现在有n个商品,商品能用纸币或者代金券购买,当然你可以买v3个商品免费.问怎么最大能买多少价值 题意: 思路二维背包,dp[v1][v2][v3]=M ...
- rqnoj-329-刘翔!加油!-二维背包
注意排除干扰项. 因为价值不会相等,所以价值的多少与本题没有任何关系,. 所以价值为干扰项,所以不用考虑. 二维背包,简单求解. #include<stdio.h> #include< ...
- NOI 4978 宠物小精灵之收服(二维背包)
http://noi.openjudge.cn/ch0206/4978/ 描述 宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事. 一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生宠物 ...
随机推荐
- SparkSQL个人记录
SparkSQL将RDD封装成一个DataFrame对象,这个对象类似于关系型数据库中的表. 一.SparkSQL入门 1.创建DataFrame 相当于数据库中的一张表,它是一个只读的表,不能在运算 ...
- node.js 和 yarn 安装
电脑环境 windows10 专业版 64 位 node.js 安装 Node.js 官方网站下载:https://nodejs.org/en/ 之后一步步得傻瓜式安装 配置环境变量和查看node.j ...
- 剑指offer 面试题35.复杂链表的复制
时间O(N),空间O(N) /* struct RandomListNode { int label; struct RandomListNode *next, *random; RandomList ...
- MongoDB_05_更新和删除
文档的更新和删除 更新文档的方法: db.collection.update(query,update,options) //或 db.collection.update( <query> ...
- 【visio】数据流图
率属于 软件和数据库 又名 Gane-Sarson图,数据流图示描述系统数据流程关系的工具,它可以综合的反映出数据在系统中的来源.流动.处理和存储情况,可以将数据流形象具体的表现出来. 在大型项目中, ...
- selenium通过cookies直接免密登录
前提知识: 1.webdriver中提供了操作cookie的相关方法: get_cookies() 获得cookie信息 add_cookie(cookie_di ...
- python 网页中文显示Unicode码
print repr(a).decode("unicode–escape") 注:a是要输出的结果,
- C语言 多文件编程
C语言 多文件编程 分文件编程 把函数声明放在头文件xxx.h中,在主函数中包含相应头文件 在头文件对应的xxx.c中实现xxx.h声明的函数 防止头文件重复包含 1.当一个项目比较大时,往往都是分文 ...
- 【游戏体验】Colour My World(让我的世界充满色彩)
这是一款玩法简单的游戏 但是它给你的感觉不一样 推荐试玩 个人测评 游戏性 7/10 音乐 9/10 剧情 6/10 总评 22/30
- python函数编程闯关总结
文件处理相关 1,编码问题 (1)请问python2与python3中的默认编码是什么? python .x默认的字符编码是ASCII,默认的文件编码也是ASCII python .x默认的字符编码是 ...