uva 10130 超市减价全家买东西

来源:互联网 发布:数据管家板块 编辑:程序博客网 时间:2024/06/11 09:47

uva 10130

01背包,给你n种物品,m个人,给每个人能承受的最大重量,求可以最多买到的价值是多少

不知道There is a SuperSale in a SuperHiperMarket. Every person can take only one object of each kind, i.e. one TV, one carrot, but for extra low price. 说的是什么意思

#include<stdio.h>#include<string.h>int dp[40];int c[1010],w[1010];int max(int a,int b){    return a>b?a:b;}int main(){    int i,j,k,l,m,n,t;    scanf("%d",&t);    while(t--)    {        scanf("%d",&n);        for(i=1;i<=n;i++)            scanf("%d%d",&w[i],&c[i]);        memset(dp,0,sizeof(dp));        for(i=1;i<=n;i++)        {            for(j=30;j>=c[i];j--)                dp[j]=max(dp[j],dp[j-c[i]]+w[i]);        }        int res=0;        scanf("%d",&m);        for(i=1;i<=m;i++)        {            int x;            scanf("%d",&x);            res+=dp[x];        }        printf("%d\n",res);    }    return 0;}