此题与【POJ】Charm Bracelet思路一样,题目大意也基本相同,所以就不赘述了。
AC:
#include<iostream>
#include<algorithm>
#include<memory.h>
const int N=10000;
using namespace std;
int v[N], w[N], dp[N];
int main()
{
int t,n,s;
cin >> t;
while(t--)
{
cin >> n >> s;
memset(dp,0,sizeof(dp));
for(int i=0;i<n;i++)
cin >> v[i];
for(int i=0;i<n;i++)
cin >> w[i];
for(int i=0;i<n;i++)
{
for(int j=s;j>=w[i];j--)
{
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}
cout << dp[s] << endl;
}
}