许多年前,在欧洲的一个乡村中,有一个被称为“骨头收集者”的巫师。她喜欢收集各种骨头,例如狗,牛的骨头。某天他去了一个埋葬动物的坟墓,带着一个大袋子,最多能装体积为V的骨头。不同的骨头具有不同的骨头值和不同的体积,现在给定沿途的每个骨头的骨头值以及体积,您能否计算出骨头收集者可获得的骨头值总和的最大值?
#include<bits/stdc++.h>
using namespace std;
int w[1010],v[1010],d[1010][1010];
int main(){
int t,n,V;
cin>>t;
while(t--){
cin>>n>>V;
for(int i=1;i<=n;i++)
cin>>w[i];
for(int i=1;i<=n;i++)
cin>>v[i];
for(int i=0;i<=n;i++)
d[i][0]=1;
for(int i=1;i<=n;i++)
for(int j=0;j<=V;j++){
if(v[i]>j) d[i][j]=d[i-1][j];
else d[i][j]=max(d[i-1][j],d[i-1][j-v[i]]+w[i]);
}
cout<<d[n][V]-1<<endl;
}
return 0;
}