uva 10130 超市減價全家買東西
阿新 • • 發佈:2019-02-17
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; }