uvaoj 10130-SuperSale 动态规划
来源:互联网 发布:数据库考试题库 编辑:程序博客网 时间:2024/06/08 06:05
uvaoj 10130-SuperSale 动态规划
就是一个背包问题,有多种物品,每种物品有价值和重量,个数无限,还有多个人,每个人可以拿的重量时一定的,并且每个人只能拿一种物品的一个,求这么多人取的最大价值是多少。
其实对于每一个人来说,就是一个01背包,但是我们不需要求多次,只需要求出来能拿重量最多的那个,那么少的自然就出来了,最后再加起来就行了。
代码如下:
/*************************************************************************> File Name: 10130.cpp> Author: gwq> Mail: gwq5210@qq.com > Created Time: 2014年12月19日 星期五 22时43分42秒 ************************************************************************/#include <cmath>#include <ctime>#include <cctype>#include <climits>#include <cstdio>#include <cstdlib>#include <cstring>#include <map>#include <set>#include <queue>#include <stack>#include <string>#include <vector>#include <sstream>#include <iostream>#include <algorithm>#define INF (INT_MAX / 10)#define clr(arr, val) memset(arr, val, sizeof(arr))#define pb push_back#define sz(a) ((int)(a).size())using namespace std;typedef set<int> si;typedef vector<int> vi;typedef map<int, int> mii;typedef long long ll;const double esp = 1e-5;#define N 1010struct Node {int p, w;int input(void){return scanf("%d%d", &p, &w);}}node[N];int g[N], dp[N];int main(int argc, char *argv[]){int n, t, m;;scanf("%d", &t);while (t--) {scanf("%d", &n);for (int i = 0; i < n; ++i) {node[i].input();}scanf("%d", &m);for (int i = 0; i < m; ++i) {scanf("%d", &g[i]);}clr(dp, 0);for (int i = 0; i < n; ++i) {for (int j = 30; j >= 0; --j) {if (j - node[i].w >= 0 && dp[j] <= dp[j - node[i].w] + node[i].p) {dp[j] = dp[j - node[i].w] + node[i].p;}}}int ans = 0;for (int i = 0; i < m; ++i) {ans += dp[g[i]];}printf("%d\n", ans);}return 0;}
0 0
- uvaoj 10130-SuperSale 动态规划
- UVA 10130 SuperSale 动态规划
- [动态规划]UVA10130 - SuperSale
- UVA - 10130 - SuperSale (动态规划 - 01背包)
- uvaoj 147 - Dollars 动态规划
- 10130SuperSale
- 10130 - SuperSale
- 10130 - SuperSale
- uvaoj 357 - Let Me Count The Ways 动态规划
- uvaoj 562 - Dividing coins 动态规划-01背包
- uvaoj 624 CD 动态规划 01背包 记录答案
- uva 10130 SuperSale
- UVA 10130 SuperSale
- Uva 10130 - SuperSale
- UVa 10130 - SuperSale
- UVa 10130 - SuperSale
- UVa 10130 - SuperSale 背包
- uva 10130 - SuperSale
- 2.ios拖控件
- 我的c语言笔记---字符串
- 设计模式 观察者模式
- 代码高亮之prettify
- 从写软件到买软件2
- uvaoj 10130-SuperSale 动态规划
- uva 11151(dp)
- centos 安装yum
- 安装linux发生的无法引导windows以及windows分区变为raw的解决
- SQL Server 服务器更名及添加Windows登录名
- 痴迷一世却为人的生活
- leetcode: Jump Game II
- 血型统计
- 大奖赛计分-1