HDU 2191(多重背包)
来源:互联网 发布:农村淘宝和快递公司 编辑:程序博客网 时间:2024/04/30 00:07
基本的方程只需将完全背包问题的方程略微一改即可,因为对于第i种物品有n[i]+1种策略:取0件,取1件……取n[i]件。令f[i][v]表示前i种物品恰放入一个容量为v的背包的最大权值,则有状态转移方程:
f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k<=n[i]}
#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int maxn = 205;int dp[maxn][maxn], v[maxn], w[maxn], c[maxn];int main(){int T,n,m;scanf("%d", &T);while (T--){scanf("%d%d", &n, &m);for (int i = 1; i <= m; i++){scanf("%d%d%d", &v[i], &w[i], &c[i]);}int ans = 0;for (int i = 1; i <= m; i++){for (int j = n; j >= 1; j--){dp[i][j] = dp[i-1][j];for (int k = 0; k <= c[i] && j - k*v[i] >= 0; k++){dp[i][j] = max(dp[i][j], dp[i - 1][j - k*v[i]] + k*w[i]);}ans = max(ans, dp[i][j]);}}printf("%d\n", ans);}return 0;}
0 0
- hdu 2191 多重背包
- HDU-2191 多重背包
- hdu 2191 多重背包
- hdu 2191 (多重背包)
- hdu 2191(多重背包)
- hdu 2191 多重背包
- HDU 2191 多重背包
- HDU 2191 多重背包
- HDU 2191 多重背包
- hdu 2191 多重背包
- hdu 2191 多重背包
- hdu 2191 多重背包
- HDU 2191 (多重背包)
- hdu 2191(多重背包)
- HDU 2191(多重背包)
- 多重背包 HDU 2191
- hdu 2191 多重背包
- HDU 2191 多重背包
- Android绘图API开发自定义控件视图
- 注解
- UVA 357 Let Me Count The Ways 动态规划解法、母函数解法
- 基于PCL三维曲面重建
- iOS - 报错 The dependency `xxx` is not used in any concrete target
- HDU 2191(多重背包)
- 二叉树—小球下落问题
- JavaScript中的表单操作
- OC 使用#pragma mark代码分组
- 框架 day30 Struts2练习项目-人员管理(增删改查)
- Morris Traversal
- SQL之视图的使用
- Pixhawk之姿态控制篇(1)_源码算法分析(超级有料)
- 函数节流(throttle)与函数去抖(debounce)