思路
就是一个多个测试的01背包
代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=1010;
int n,m;
int v[N],w[N];
int f[N];
int main(){
int T;
cin >> T;
while(T--){
cin >> n >> m;
memset(f,0,sizeof f);
for(int i=0;i<n;i++)cin >> w[i];
for(int i=0;i<n;i++)cin >> v[i];
for(int i=0;i<n;i++){
for(int j=m;j>=v[i];j--){
f[j]=max(f[j],f[j-v[i]]+w[i]);
}
}
cout << f[m] << "\n";
}
}