HDU 2159 完全背包
题目链接: 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 完全背包相关推荐
- HDU 2159 FATE (DP 二维费用背包)
题目链接 题意 : 中文题不详述. 思路 : 二维背包,dp[i][h]表示当前忍耐值为i的情况下,杀了h个怪得到的最大经验值,状态转移方程: dp[i][h] = max(dp[i][h],dp[i ...
- HDU 2159 FATE【二维完全背包】
题目链接:https://vjudge.net/problem/HDU-2159 FATE ...
- 二维费用 hdu 2159 FATE(完全背包)HDU OJ 4501 小明系列故事——买年货【DP】
二维费用的背包问题是指:对于每件物品,具有两种不同的费用:选择这件物品必须同时付出这两种代价:对于每种代价都有一个可付出的最大值(背包容量).问怎样选择物品可以得到最大的价值.设这两种代价分别为代价1 ...
- FATE HDU - 2159(二维完全背包)
限制条件: 1.忍耐度 m 2.杀怪个数 s 构造: dp[m][s] 得到的经验值 Time limit 1000 ms Memory limit 32768 kB ...
- hdu 2159 FATE 二维背包
FATE Time Limit: 2000/1000 MS ...
- HDU 2159 FATE 动态规划二维费用的背包问题
http://acm.hdu.edu.cn/showproblem.php?pid=2159 题意: 给出的n , m , k ,s 分别代表还需n经验升级.还有m耐久度.下面有k组数据.最多能杀s只 ...
- hdu 2955 01背包
http://acm.hdu.edu.cn/showproblem.php?pid=2955 如果认为:1-P是背包的容量,n是物品的个数,sum是所有物品的总价值,条件就是装入背包的物品的体积和不能 ...
- hdu 3732(01背包转多重背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3732 思路:这么大的数据,用01背包肯定会TLE的,01背包转多重背包..最多也就11*11=121件 ...
- HDU - Robberies(01背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...
- hdu 3591 多重背包+完全背包练习题
1 题目 http://acm.hdu.edu.cn/showproblem.php?pid=3591 题意:货币系统有 N 种不同面值的钱,每种钱的价值分别为 V1,V2,...,VN 一个人要买价 ...
最新文章
- 利用runtime实现KVO
- 代码荣辱观-以运用风格为荣,以随意编码为耻
- java编程三月有几天_3月有多少天
- 关于CAShapeLayer的一些实用案例和技巧
- linux实验五编程淮海工学院,实验一-LinuxC编程工具GCC和GDB.doc
- spark源码分析之Executor启动与任务提交篇
- Python 第七篇:socket编程
- 2、linux网络编程--无连接与面向连接的区别
- 嵌入式软件工程师岗位笔试、面试题(1)
- 数据仓库建设规范(文档版)
- 上位机软件定制开发,如何选择服务商
- mysql键值_如何在MySQL中存储键值对?
- EdgeBox_EHub_tx1_tx2_E100 系统网络调试链接说明
- 十六进制字符串转中文
- C++实现与电脑进行石头剪刀布的游戏
- C语言中的hook和bait设计
- php画奥运五环颜色,php趣味 - php 奥运五环
- 小米电视盒服务器维护,告别小白!小米电视/盒子不为人知的设置技巧
- mysql YEARWEEK(date[,mode]) 函数
- jQuery中所用到的第三方插件