30分 玄关
查看原帖
30分 玄关
1080060
Aaa_GSQ楼主2024/8/7 15:47
#include<bits/stdc++.h>
using namespace std;
int n,m,Qb;
int k[10010],c[10010],dp[10010];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>k[i];
	for(int i=1;i<=n;i++) {
		cin>>c[i];
		Qb+=c[i]*k[i];
	}
	dp[0]=1;
	for(int i=1;i<=n;i++) {
		for(int j=Qb;j>=0;j--) {
			for(int l=0;l<=k[i];l++) {
				if(j>=l*c[i]) dp[j]=max(dp[j],dp[j-l*c[i]]*l);
			}
		}
	}
	int ans=0;
	while(ans<=Qb && dp[ans]<=m) ans++;
	cout<<ans;
	return 0;
}

2024/8/7 15:47
加载中...