一个关于打怪升级的算法问题。。
题意:一个人在玩游戏老是要打怪升级,他愤怒了,现在,还差n经验升级,还有m的耐心度(为零就删游戏不玩了。。),有m种怪,有一个最大的杀怪数s(杀超过m只也会删游戏的。。),还给出每种怪对应的经验和消耗的耐心度。问如果能升级最多还有多少耐心度?
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2159

#include<iostream>
using namespace std;
#define N 110
#define MAX(a, b) (a > b ? a : b)
int dp[N][N];
int cost[N];//忍耐度
int value[N];//经验 int main()
{
int n, m, k, s;//n经验,m耐心度,s最多杀怪数
while (cin>>n>>m>>k>>s)
{
for (int i = 0; i<k; i++)
cin>>value[i]>>cost[i];
memset(dp, 0, sizeof(dp)); int ans = 0;
for (i = 0; i<k; i++)
{
for (int j = cost[i]; j<=m; j++)
{
for (int k = 1; k<=s; k++)
{
dp[j][k] = MAX(dp[j][k], dp[j - cost[i]][k - 1] + value[i]);
if (dp[j][k] >= n && (m - j) > ans) ans = m - j;//记录最大的耐心度
}
}
}
if (dp[m][s] < n) cout<<-1<<endl;
else cout<<ans<<endl;
}
return 0;
}
第一次做二维费用背包,虽然是水题,但是又感觉到算法的牛叉,除了输入输出,核心代码只有一行。
如果对背包都没什么概念的朋友,想要看懂,需要回去理解下背包,不然就。。。
												

HDU 2159 二维费用背包问题的更多相关文章

  1. HDU 3496 (二维费用的01背包) Watch The Movie

    多多想看N个动画片,她对这些动画片有不同喜欢程度,而且播放时长也不同 她的舅舅只能给她买其中M个(不多不少恰好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. hdu 2159 二维完全背包

    Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务.久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级.现 ...

  5. hdu_2159(二维费用背包)

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

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

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

  7. 动态规划:HDU3496-Watch The Movie(二维费用的背包问题)

    Watch The Movie Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  8. 动态规划:HDU2159-FATE(二维费用的背包问题)

    FATE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  9. hdu2159二维费用背包

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

随机推荐

  1. 依赖和用jar包得区别

    有个项目,需要用到第三方开发的一个jar文件,我先是把生成的jar文件直接拷贝到我的项目的libs目录下,项目自动加载了引用的jar包,在java文件中使用也没有问题,但是由于引用的jar文件中有自定 ...

  2. java学习之线程的操作方法

    package com.gh.thread; /** * 线程实现的两种方法 * 1.继承thread类 * 2.实现Runnable接口 * @author ganhang * */ public ...

  3. 警告:‘xxxx’ 将随后被初始化

    关于编译报警告.本次是接手一个新手的代码,总共不到1K行的代码.两个类.编译的时候报的警告,本来也不打算管理这个事情的.要求也不会有那么严格.但上午看完代码后,觉得毕竟是新手写的代码,还是有很多需要修 ...

  4. Cloud Foundry中warden的网络设计实现——iptable规则配置

    在Cloud Foundry v2版本号中,该平台使用warden技术来实现用户应用实例执行的资源控制与隔离. 简要的介绍下warden,就是dea_ng假设须要执行用户应用实例(本文暂不考虑ward ...

  5. HDU 4642 (13.08.25)

    Fliping game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  6. 自己新建Xib 和.h .m文件关联

    代理中注意点 1.新建MainViewController.h 和 MainViewController.m文件: 新建Main.xib文件: 2.拖View到Main.xib中: 3.点击File’ ...

  7. ajax 基础实例

      优点:使用ajax读取数据文件,不需要刷新页面就能取出文件数据 目  录 1.0 基于ajax请求的理论支持 1.1 js 实现jquray中 ajax请求功能 基于ajax请求的理论支持 < ...

  8. php四舍五入函数(floor、ceil、round与intval)

    原文链接:php四舍五入函数(floor.ceil.round与intval) PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法 ...

  9. 我的Python成长之路---第三天---Python基础(9)---2016年1月16日(雾霾)

    一.集合 set和dict类似,也是一组key的集合,但不存储value.由于key不能重复,所以,在set中,没有重复的key. 集合和我们数学中集合的概念是一样的,也有交集,并集,差集,对称差集等 ...

  10. POJ 1379 Run Away 【基础模拟退火】

    题意:找出一点,距离所有所有点的最短距离最大 二维平面内模拟退火即可,同样这题用最小圆覆盖也是可以的. Source Code: //#pragma comment(linker, "/ST ...