求调!!!回复必关!!!
代码如下
#include<iostream>
using namespace std;
int main(){
int n;
int v;
cin>>n>>v;
int c[100005],l[100005];
int cnt=0;
for(int i=1;i<=n;i++){
cin>>c[i]>>l[i];
if (l[i]>v){
l[i]=v;
}
cnt+=l[i];
}
int dp[5000005];
for(int i=1;i<=v;i++){
dp[i]=1e9;
}
for (int i=1;i<=n;i++){
for (int j=cnt;j>=l[i];j--){
dp[j]=min(dp[j],dp[j-l[i]]+c[i]);
}
}
if(cnt<v){
cout<<"no solution";
return 0;
}
int minn=1e9;
for(int i=cnt;i>=v;i--){
minn=min(minn,dp[i]);
}
cout<<minn;
return 0;
}
请大佬指教