rt,这份代码连样例 2 都过不了,但是把整道题都 AC 了:
#include<bits/stdc++.h>
#define debug(x) cout<<#x<<"="<<x<<endl;
using namespace std;
const int MAXN=510;
const int MAXM=2010;
const int MAXC=1e6+10;
int dp[MAXN][MAXM];
int c[MAXN],l[MAXN];
signed main()
{
int n,L,mxc=-1;
cin>>n>>L;
memset(dp,0x3f,sizeof dp);
for(int i=1;i<=n;i++)
cin>>c[i]>>l[i];
for(int i=1;i<=n;i++)
dp[i][0]=0;
for(int i=1;i<=n;i++)
for(int j=L;j>0;j--)
dp[i][j]=min(dp[i-1][j],dp[i-1][max(0,j-l[i])]+c[i]);
if(dp[n][L]==0x3f3f3f3f) puts("no solution");
else cout<<dp[n][L]<<endl;
return 0;
}