#include<bits/stdc++.h>
using namespace std;
const int maxn=1000+5;
const int inf=0x3f3f3f3f;
int n,m,c[maxn],v[maxn],dp[30*maxn];
//dp[第几个[空间
int main(){
cin>>n>>m;
memset(dp,inf,sizeof(dp));dp[0]=0;
for(int i=1;i<=n;i++) scanf("%d",&v[i]);
for(int i=1;i<=n;i++) scanf("%d",&c[i]);
for(int i=1;i<=n;i++)
for(int j=30*maxn-1;j>=c[i];j--){
dp[j]=min(dp[j-c[i]]+v[i],dp[j]);
}
for(int i=30005;i>=0;i--){
if(dp[i]<=m) {
cout<<i<<endl;break;
}
}
}
rb复。2
猜你喜欢
转载自blog.csdn.net/weixin_50904510/article/details/121047006
今日推荐
周排行