为啥 j 要倒序遍历!!!求解!!!(玄关)
查看原帖
为啥 j 要倒序遍历!!!求解!!!(玄关)
1023960
135791a楼主2024/8/7 16:24
#include<bits/stdc++.h>
using namespace std;
long long n,m,q;
long long k[100005],c[100005],dp[100005];
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];
		q+=c[i]*k[i];
	}
	dp[0]=1;
	for (int i=1;i<=n;i++) {
		for (int j=q;j>=1;j--) {
			for (int x=1;x<=k[i];x++) {
				if(j>=c[i]*x) dp[j]=max(dp[j],dp[j-c[i]*x]*x);
			}
		}
	}
	for (long long j=1;j<=q;j++) {
		if (dp[j]>=m) {
			cout<<j;
			return 0;
		}
	}
	return 0;
}
2024/8/7 16:24
加载中...