uva 10130 SuperSale (01背包)
来源:互联网 发布:gis是什么软件 编辑:程序博客网 时间:2024/05/22 05:09
uva 10130 SuperSale
题目大意:每组数据包括两个部分:1)货物的价值及重量 2)每个人的最大负重量。要求这些人所能带走的最大价值。
解题思路:要注意的一点是,货物是有无限的,也就是不同的人可以拿相同的货物,所以这题可以转换为01背包。把每个人的最大负重当成背包的大小,求每个人的最优解,最后相加就是答案。
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <cstdlib>typedef long long ll;using namespace std;struct good{ int v, w;};good g[1005];int p[105], dp[105];int main() { int T; scanf("%d", &T); while (T--) { int n, m; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d %d", &g[i].v, &g[i].w); } scanf("%d", &m); for (int i = 0; i < m; i++) { scanf("%d", &p[i]); } int sum = 0; for (int i = 0; i < m; i++) { int Max = 0; memset(dp, 0, sizeof(dp)); for (int j = 0; j < n; j++) { for (int k = p[i]; k > 0; k--) { if ((k == g[j].w || dp[k - g[j].w]) && dp[k] < dp[k - g[j].w] + g[j].v) { dp[k] = dp[k - g[j].w] + g[j].v; if (dp[k] > Max) Max = dp[k]; } } } sum += Max; } printf("%d\n", sum); } return 0;}
0 0
- uva 10130 SuperSale(01背包)
- UVA - 10130 SuperSale (01背包)
- uva 10130 SuperSale (01背包)
- uva 10130 - SuperSale(01背包)
- Uva-10130 SuperSale 01背包
- SuperSale - UVa 10130 01背包
- 【UVA】10130-SuperSale(01背包)
- UVA 10130 SuperSale(01背包)
- UVA 10130 SuperSale(背包)
- UVa 10130 - SuperSale 背包
- uva 10130 - SuperSale(01背包简单变换)
- UVA - 10130 - SuperSale (动态规划 - 01背包)
- UVA 10130 SuperSale(dp + 01背包)
- UVa 10130 SuperSale(DP 01背包)
- UVA - 10130 SuperSale 01背包问题
- UVA 10130 SuperSale (DP 01背包)
- UVA.10130 SuperSale (DP 01背包)
- Uva 10130-SuperSale(0-1背包)
- kali linux 安装samb共享,只要几步,精简配置
- 机器学习 --- 1. 线性回归与分类, 解决与区别
- 人工智能、机器学习、统计学和数据挖掘之间有什么区别?
- URAL 2001. Mathematicians and Berries
- 小马哥----高仿红米note 主板为x2 分屏幕驱动 机型版本多 拆机主板详图 注意看排线
- uva 10130 SuperSale (01背包)
- 比较数的大小
- 最大公约数算法
- jquery 重置表单里的元素
- 交换两个数的值
- Leetcode-Number of 1 Bits
- 机器学习笔记-线性回归
- GPS坐标转百度地图坐标的方法
- 2015年第三周项目一:三角形类1