#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#define M 1000+10
using namespace std;
int p[M],w[M],dp[M];
int main()
{
int T,n,m,c;
cin>>T;
while(T--)
{
cin>>n;
for(int i=0; i<n; i++)
cin>>p[i]>>w[i];
cin>>m;
int sum=0;
while(m--)
{
cin>>c;
memset(dp,0,sizeof(dp));
for(int i=0; i<n; i++)
for(int j=c; j>=0; j--)
if(j>=w[i])
dp[j]=max(dp[j],dp[j-w[i]]+p[i]);
sum+=dp[c];
}
cout<<sum<<endl;
}
return 0;
}
UVA 10130 - SuperSale(0-1背包问题)
最新推荐文章于 2020-03-02 22:37:01 发布