#include<bits/stdc++.h>
using namespace std;
long long dp[5][1000005];
int w[1005],v[1005];
int main(){
int n,c;
cin>>n>>c;
for(int i=1;i<=n;i++) cin>>w[i]; //空间
for(int i=1;i<=n;i++) cin>>v[i]; //价值
for(int i=1;i<=n;i++){
for(int j=1;j<=c;j++){
if(j-w[i]>=0)
dp[i%2][j]=max(dp[(i-1)%2][j],dp[i%2][j-w[i]]+v[i]);
else dp[i%2][j]=dp[(i-1)%2][j];
}
}
cout<<dp[n%2][c]<<endl;
return 0;
}
全部回复 共 0 条
还没有人回复。往下写第一条。
发表回复
登录后即可回复本帖,与出题人和同学一起讨论。
登录