40分求调
查看原帖
40分求调
1066991
Revenge2024楼主2024/11/23 15:29
using namespace std;
long long n,l;
long long dp[1000005];
long long ci[2000000];
long long li[2000000];
long long m=0;
long long s=0;
int main(){
	cin>>n>>l;
	
	for(int i=1;i<=n;i++){
		cin>>ci[i]>>li[i];
		m+=li[i];
		s+=ci[i];
	}
	
	if(m<l){
		cout<<"no solution";
		return 0;
	}
	
	for(int i=1;i<=n;i++){
		for(int j=s;j>=ci[i];j--){
			dp[j]=max(dp[j],dp[j-ci[i]]+li[i]);
		}
	}
	
	for(int i=1;i<=l;i++){
		if(dp[i]>=l){
			cout<<i;
			return 0;
		}
	}
//	cout<<"no solution";
	return 0;
}
2024/11/23 15:29
加载中...