//这样子连样例都过不了,三个样例全是no solution
#include<bits/stdc++.h>
using namespace std;
int n,L,c[505],l[505];
int dp[2005];
int main()
{
    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++)
        for(int j=L;j>=0;j--)
            dp[j]=min(dp[j],dp[max(j-l[i],0)]+c[i]);
    if(dp[L]==0x3f3f3f3f)cout<<"no solution"<<endl;
    else cout<<dp[L]<<endl;
    return 0;
}
//这样就直接ac了
#include<bits/stdc++.h>
using namespace std;
int n,L,c[505],l[505];
int dp[2005];
int main()
{
    cin>>n>>L;
    for(int i=1;i<=L;i++)
        dp[i]=0x3f3f3f3f;
    for(int i=1;i<=n;i++)
        cin>>c[i]>>l[i];
    for(int i=1;i<=n;i++)
        for(int j=L;j>=0;j--)
            dp[j]=min(dp[j],dp[max(j-l[i],0)]+c[i]);
    if(dp[L]==0x3f3f3f3f)cout<<"no solution"<<endl;
    else cout<<dp[L]<<endl;
    return 0;
}

3 条评论

  • 1

信息

ID
2613
难度
7
分类
(无)
标签
递交数
51
已通过
12
通过率
24%
上传者