uva10130解题报告
2013-05-30 10:50
239 查看
Root :: Contest Volumes :: Volume CI | |
10130 - SuperSaleTime limit: 3.000 seconds |
Root :: Contest Volumes :: Volume CI | |
SuperSale
There is a SuperSale in a SuperHiperMarket. Every personcan take only one object of each kind, i.e. one TV, one carrot, but
for extra low price. We are going with a whole family to that
SuperHiperMarket. Every person can take as many objects, as he/she
can carry out from the SuperSale. We have given list of objects
with prices and their weight. We also know, what is the maximum
weight that every person can stand. What is the maximal value of
objects we can buy at SuperSale?
Input Specification
The input consists of T testcases. The number of them
(1<=T<=1000) is given on
the first line of the input file.
Each test case begins with a line
containing a single integer number N that indicates the
number of objects (1 <= N <=
1000). Then followsN lines, each containing two
integers: P and W. The first integer
(1<=P<=100) corresponds to the price
of object. The second integer
(1<=W<=30) corresponds to the weight
of object. Next line contains one integer
(1<=G<=100) it’s the number of people
in our group. Next G lines contains maximal weight
(1<=MW<=30) that can stand this
i-th person from our family
(1<=i<=G).
Output Specification
For every test case your program has todetermine one integer. Print out the maximal value of goods which
we can buy with that family.
Sample Input
23
72 17
44 23
31 24
1
26
6
64 26
85 22
52 4
99 18
39 13
54 9
4
23
20
20
26
Output for the Sample Input
72514
这题就是简单的0-1背包Every person can take only one
object of each kind这句很关键(提醒就是0-1背包)。。
老是被0-1背包的模版束缚,不知道变通。不知道这个条件的作用Next line
contains one integer (1<=G<=100) it’s
the number of people in our group. Next G lines contains maximal
weight (1<=MW<=30) that can stand
this i-th person from our family
(1<=i<=G).不知道怎么处理它。
Print out the maximal value of goods which
we can buy with that
family.在看这句就差不多明白了。。有多个人我们要做的就是在背包九讲中0-1背包的基础上累加每一个人的max值就ok了。头脑不会转,没办法啊。。多思少巧。
#include<stdio.h>
#include<string.h>
#define maxn 1005
int f[10001],p[maxn],w[maxn];
int c,ans,T,N,G;
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d",&N);
int i,j;
for(i=1;i<=N;i++)
scanf("%d
%d",&p[i],&w[i]);
scanf("%d",&G);
ans=0;
while(G--)
{
scanf("%d",&c);
memset(f,0,sizeof(f));
for(i=1;i<=N;i++)
{
for(j=c;j>=0;j--)
{
if(j>=w[i])
f[j]=max(f[j],f[j-w[i]]+p[i]);
}
}
ans+=f[c];//累加;
}
printf("%d\n",ans);
}
return 0;
}
相关文章推荐
- UVAlive 3890&Poj3525 半平面交+二分 解题报告
- UVa 1121 Subsequence 解题报告(思维)
- UVAlive 5869 Airport 解题报告
- Uva 11137 Ingenuous Cubrency 解题报告(递推)
- UVa 1467 Installations 解题报告(贪心)
- UVa 1555 Garland 解题报告(推导)
- UVA 409 解题报告
- UVA 10474 解题报告
- UVA 156 解题报告
- Uva 11645 - Bits 解题报告(递推+大数)
- Uva 10497 - Sweet Child Makes Trouble 解题报告(递推+大数)
- [UVA10181]十五数码解题报告
- UVa 10305 Ordering Tasks 拓扑排序 解题报告
- UVA 11090 SPFA+二分答案 解题报告
- UVA 12589 Learning Vector 解题报告
- UVa 400 - Unix ls解题报告
- [解题报告]《算法竞赛入门经典》基础题Volume 0. Getting Started Uva10055 Uva10071 Uva10300 Uva458 Uva494 Uva490 Uva445 Uva488 Uva489 Uva694 Uva457
- UVA11090 Going in Cycle!! 解题报告【判负环】【SPFA】【二分答案】
- 一中OJ #1457 越大越聪明[Uva 10131 -> Is Bigger Smarter?] | 动态规划 字典序LIS | 解题报告
- UVa 1326 Jurassic Remains 解题报告(Meet-in-the-Middle)