50分,2 7 8 9 10全re,求调
查看原帖
50分,2 7 8 9 10全re,求调
1255103
cjwksjykr楼主2024/7/26 16:25
#include<iostream>

using namespace std;

#define ll long long

ll ans=-1;
ll v,n,c;
ll k[10003]={0};
ll m[10003]={0};
ll dp[1003][1003]={0};

int main()
{
    cin>> v >> n >> c;
    for(int i=1;i<=n;i++)
        cin>> k[i] >> m[i];
    for(int i=1;i<=n;i++)
        for(int j=0;j<=c;j++)
    {
        if(j>=m[i])
            dp[i][j]=max(dp[i-1][j],dp[i-1][j-m[i]]+k[i]);
        else dp[i][j]=dp[i-1][j];
        if(dp[i][j]>=v) ans=max(ans,c-j);
    }
    if(dp[n][c]>=v) cout<< ans;
    else cout<< "Impossible";
    return 0;
}

2024/7/26 16:25
加载中...