10分求调
查看原帖
10分求调
1411885
Jeremy86224498_楼主2025/8/3 20:14
#include<iostream>
#include<cstring>
#include<climits>
using namespace std;
struct drink{
	int c;
	int l;
}d[505];
int dp[4005],sum=0;
int main(){
	int N,L;
	cin>>N>>L;
	for(int i=1;i<=N;i++){
		cin>>d[i].c>>d[i].l;
		d[i].l=min(d[i].l,L);
		sum+=d[i].l;
	}
	if(sum<L){
		cout<<"no solution";
		return 0;
	}
	memset(dp,127,sizeof(dp));
	for(int i=1;i<=N;i++){
		for(int j=2*L;j>=d[i].l;j--){
			dp[j]=min(dp[j],dp[j-d[i].l]+d[i].c);
		}
	}
	int ans=INT_MAX;
	for(int i=L;i<=2*L;i++){
		ans=min(ans,dp[i]);
	}
	cout<<ans;
}
2025/8/3 20:14
加载中...