解題報告:
思路:01揹包裸題。
代碼:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 1e3 + 10;
ll w[N], v[N];
ll dp[N];
ll n, V;
void solve(){
memset(dp, 0, sizeof(dp));
for(ll i=0; i<n; ++i){
for(ll j=V; j>=w[i]; --j){
dp[j] = max(dp[j], dp[j-w[i]] + v[i]);
}
}
printf("%lld\n", dp[V]);
}
int main(){
ll t;
scanf("%lld", &t);
while(t--){
scanf("%lld%lld", &n, &V);
for(ll i=0; i<n; ++i){
scanf("%lld", v + i);
}
for(ll i=0; i<n; ++i){
scanf("%lld", w + i);
}
solve();
}
return 0;
}