题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2159

解题思路: 这题很明显是完全背包,因为每种物品无限多。但一个小难点,就是还需要考虑最多杀怪数,也就是最多只能选K个物品。那么怎么办那? 其实并不难,那就多增加一层循环呗

多考虑一个杀怪数罢了  。F[U][V] 前 i 个物品个选V个物品装进容量为U的背包的最大价值。

所以转态转移方程:   f [u][v]  =  max ( f [u][v] , f [u-b][v-1]  + a )   这里也就是多了个【v-1】,v-1是你将第 i 个装进包里,那么前面就只需再选 V-1 个物品。

这里的物品就是怪物,我只是把模型抽离出来便于理解。

代码:

#include <bits/stdc++.h>
#define MAXS 106
#define INF 0x3f3f3f3f
using namespace std;int f[MAXS][MAXS];
int n,m,k,s;int main(int argc, char const *argv[])
{  int a,b;while(~scanf ("%d%d%d%d",&n,&m,&k,&s)){    memset(f,0,sizeof(f));int ans = -1;for (int i = 0; i < k;++i){scanf ("%d%d",&a,&b);for (int u = b; u <= m ; ++u){for (int v = 1 ; v <= s ; ++v)//多增加了一层循环,处理怪的数量要求{f[u][v] = max (f[u][v] , f[u-b][v-1] +a);if ( f[u][v] >= n)if ( (m - u) > ans ) //(m-n)表示剩余的疲劳值,如果更大就更新ans = m - u ;}}}printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/yuluoluo/p/8919436.html

HDU 2159 完全背包相关推荐

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

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

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

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

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

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

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

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

  5. hdu 2159 FATE 二维背包

    FATE                                                                       Time Limit: 2000/1000 MS ...

  6. HDU 2159 FATE 动态规划二维费用的背包问题

    http://acm.hdu.edu.cn/showproblem.php?pid=2159 题意: 给出的n , m , k ,s 分别代表还需n经验升级.还有m耐久度.下面有k组数据.最多能杀s只 ...

  7. hdu 2955 01背包

    http://acm.hdu.edu.cn/showproblem.php?pid=2955 如果认为:1-P是背包的容量,n是物品的个数,sum是所有物品的总价值,条件就是装入背包的物品的体积和不能 ...

  8. hdu 3732(01背包转多重背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3732 思路:这么大的数据,用01背包肯定会TLE的,01背包转多重背包..最多也就11*11=121件 ...

  9. HDU - Robberies(01背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...

  10. hdu 3591 多重背包+完全背包练习题

    1 题目 http://acm.hdu.edu.cn/showproblem.php?pid=3591 题意:货币系统有 N 种不同面值的钱,每种钱的价值分别为 V1,V2,...,VN 一个人要买价 ...

最新文章

  1. 利用runtime实现KVO
  2. 代码荣辱观-以运用风格为荣,以随意编码为耻
  3. java编程三月有几天_3月有多少天
  4. 关于CAShapeLayer的一些实用案例和技巧
  5. linux实验五编程淮海工学院,实验一-LinuxC编程工具GCC和GDB.doc
  6. spark源码分析之Executor启动与任务提交篇
  7. Python 第七篇:socket编程
  8. 2、linux网络编程--无连接与面向连接的区别
  9. 嵌入式软件工程师岗位笔试、面试题(1)
  10. 数据仓库建设规范(文档版)
  11. 上位机软件定制开发,如何选择服务商
  12. mysql键值_如何在MySQL中存储键值对?
  13. EdgeBox_EHub_tx1_tx2_E100 系统网络调试链接说明
  14. 十六进制字符串转中文
  15. C++实现与电脑进行石头剪刀布的游戏
  16. C语言中的hook和bait设计
  17. php画奥运五环颜色,php趣味 - php 奥运五环
  18. 小米电视盒服务器维护,告别小白!小米电视/盒子不为人知的设置技巧
  19. mysql YEARWEEK(date[,mode]) 函数
  20. jQuery中所用到的第三方插件

热门文章

  1. 帆软高级函数应用之数组函数
  2. MySQL创建新连接时,不能成功连接的问题
  3. LeetCode每周刷题(2019.7.1-2019.7.7)
  4. MySQL8的新特性ROLE
  5. file处理的一些内容
  6. ceph cluster monitor
  7. centos 安装 lua运行环境   非yum安装
  8. 参数学习/非参数学习算法
  9. HDU 3996 Gold Mine【最大闭合权图】
  10. python小括号、中括号和大括号的区别