这题是一个二维背包的题目,刚开始并没有那样去做,只开了一维的空间来存储状态,结果很多的数据都没有跑过去。其实这题这样来问的话可能就明了很多了,求在指定的容忍值和指定的杀怪数下,求最大能够得到了经验数,可能我们马上就能想到二维背包,一维为杀怪数,二维为容忍值,在做一个完全背包,可惜这题问的是在满足升级情况下最大的容忍值,这其实也能够用上面构建的模型了解决。只要的求解的过程每次将得到的经验值与给定的N进行比较,如果超过了N,那么说明当前的方案能够触发升级,再将此时剩余的容忍值传递出来就可以了。总而言之,题目对攻击次数和容忍值进行了限制,那么我们就要对限制的量进行动态规划。

代码如下:

#include <cstdlib>
#include <cstring>
#include <cstdio>
#define MAXN 105
using namespace std;int N, M, K, S;
int exp[MAXN], use[MAXN], dp[2500][2500];inline int max(int x, int y)
{return x > y ? x : y;
}int DP()
{int flag = -1;for (int x = 1; x <= K; ++x) { for (int i = 1; i <= S; ++i) {for (int j = use[x]; j <= M; ++j) {dp[i][j] = max(dp[i-1][j-use[x]] + exp[x], dp[i][j]);if (dp[i][j] >= N) {flag = max(flag, M-j);}}}}return flag;
}int main()
{while (scanf("%d %d %d %d", &N, &M, &K, &S) == 4) {memset(dp, 0, sizeof (dp));for (int i = 1; i <= K; ++i) {scanf("%d %d", &exp[i], &use[i]);}printf("%d\n", DP());}return 0;
}

转载于:https://www.cnblogs.com/Lyush/archive/2012/04/21/2460976.html

HDU-2159 FATE 二维背包相关推荐

  1. hdu 2159 FATE 二维背包

    FATE                                                                       Time Limit: 2000/1000 MS ...

  2. HDU-2159 FATE 二维背包

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

  3. FATE HDU - 2159(二维完全背包)

    限制条件: 1.忍耐度 m   2.杀怪个数 s 构造: dp[m][s]   得到的经验值 Time limit       1000 ms Memory limit       32768 kB ...

  4. 二维费用 hdu 2159 FATE(完全背包)HDU OJ 4501 小明系列故事——买年货【DP】

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

  5. HDU2159 FATE(二维背包、带限制条件的背包问题)

    题目传送门 题意很明显,就不细说了 我们这里可以把剩下的忍耐度看作背包容量,然后价值就是杀了怪所得的经验 用第二维表示杀了q只怪,这样就能用dp[j][q]表示已消耗j点忍耐度,杀了q只怪时的经验值 ...

  6. HDU 2159 FATE (DP 二维费用背包)

    题目链接 题意 : 中文题不详述. 思路 : 二维背包,dp[i][h]表示当前忍耐值为i的情况下,杀了h个怪得到的最大经验值,状态转移方程: dp[i][h] = max(dp[i][h],dp[i ...

  7. 杭电2159-FATE (二维背包运用+详细解释)

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

  8. c++ 动态规划-二维背包 and 潜水员问题

    动态规划 - 二维背包 1.普通二维(费用)背包 01背包问题:给定 n 种物品和一个重量(容量)(限定条件)为 w 的背包,物品 i 的重量是 wi,其价值为 vi.(每种物品只有一个)问:如何选择 ...

  9. HDU 2159 FATE【二维完全背包】

    题目链接:https://vjudge.net/problem/HDU-2159 FATE                                                       ...

最新文章

  1. python异常捕获_Python-异常捕捉
  2. CUDA编程中内存管理机制
  3. 刘敏:优麒麟开源操作系统运营实践 | DEV. Together 2021 中国开发者生态峰会
  4. 2019年第十届蓝桥杯国赛B组试题G-排列数-next_permutation枚举,模拟
  5. 监控系统的多协议直播(RTSP RTMP HTTP Live Streaming)
  6. SAS的数组array介绍
  7. [React] 尚硅谷 -- 学习笔记(七)
  8. Java方法及构造方法
  9. android iptables清空,android中的iptables错误:iptables-save和iptables-restore无法正常工作...
  10. c++switch实现猜拳_Animate/FLASH如何制作猜拳小游戏(AS3)
  11. Real-Time Rendering 4th 译文《二十一 虚拟现实与增强现实》
  12. 未来生活进行时: 畅想未来新兴技术40年——百大趋势性技术汇总(上)
  13. windows下批量创建txt文件
  14. 微信小程序地图polygons自己标点,三个点以上连成面
  15. Mob免费短信验证教程
  16. QT ffmpeg 播放器
  17. 强烈推荐:曹方,《遇见我》
  18. Android Studio连接不到MuMu模拟器;
  19. Oracle 11.2.0.1 rac升级到11.2.0.4
  20. 二级计算机等级证水平高吗,全国计算机水平一级高还是二级高

热门文章

  1. 项目托管 网站 小记
  2. Project Chameleon Work In Progress 11
  3. 【拔刀吧少年】之shell编程规范与变量
  4. 周易的含义_朱熹与《周易本义》
  5. kali-linux下搭建DVWA环境
  6. 问题 F: 小鱼的格子裁剪(dfs)
  7. 开源自建/托管与商业化自研 Trace,如何选择?
  8. java安全编码指南之:异常处理
  9. 帝国网站管理系统7.5服务器信息,帝国CMS程序 7.5版本新闻可以使用的后台免登录接口...
  10. java文件与流_Java文件和流深入