HDOJ 5410 01背包+完全背包
来源:互联网 发布:怕死 陈奕迅 知乎 编辑:程序博客网 时间:2024/05/01 04:36
题目大意:给定背包容量m,物品种类n,每种物品的重量w[i],还有卖的数量x对应的价值a[i]*x+b[i],求最大的价值。
思路:01背包选好第一个物品,即确定价值量a[i]+b[i],然后完全背包走一遍,每次价值加a[i].
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <map>#include <set>#include <vector>#include <stack>#include <queue>#include <algorithm>#include <cmath>#define LL long long#define INF 0x3f3f3f3f#define MOD 1000000007#define maxn 2024#define Pair pair<int, int>#define mem(a, b) memset(a, b, sizeof(a))using namespace std;int dp[maxn];int w[maxn], a[maxn], b[maxn];int n, m;int main(){ int T; scanf("%d", &T); while (T--) { scanf("%d%d", &m, &n); for (int i = 1; i <= n; ++i) { scanf("%d%d%d", &w[i], &a[i], &b[i]); } mem(dp, 0); for (int i = 1; i <= n; ++i) { for (int j = m; j >= w[i]; --j) { dp[j] = max(dp[j - w[i]] + a[i] + b[i], dp[j]); } for (int j = w[i]; j <= m; ++j) { dp[j] = max(dp[j], dp[j - w[i]] + a[i]); } } printf("%d\n", dp[m]); } return 0;}
0 0
- HDOJ 5410 01背包+完全背包
- 01背包,完全背包
- 01背包 完全背包
- 01背包/完全背包
- 01背包,完全背包
- 01背包,完全背包
- HDU 5410(01背包+完全背包)
- 完全背包模板 hdoj 1114
- hdoj 1248 完全背包问题
- HDOJ 2159-FATE【完全背包】
- 01背包,完全背包, 多重背包
- 01背包,完全背包,多重背包
- 01背包、完全背包、多重背包详解
- 01背包,完全背包,多重背包
- 01背包、完全背包、多重背包
- 01背包、完全背包、多重背包
- 01背包、完全背包、多重背包
- 01背包、完全背包、多重背包
- 设计模式-代理模式
- Candence16.6打开文件的问题
- vua 1660 Cable TV Network 最大流最小割 求割点
- 从宏函数到内联函数
- java中空串""与null的区别与判断
- HDOJ 5410 01背包+完全背包
- c++第二天
- 《C++ primer plus》附录G:STL方法与函数(一) 学习笔记
- webstorm2016.2激活方法
- 使用jdk和cglib实现动态代理
- Matrix Multiplication(找规律)
- TreeSet集合
- C++之虚析构函数
- ZOJ