The Preliminary Contest for ICPC Asia Shenyang 2019 C. Dawn-K's water

题目:https://nanti.jisuanke.com/t/41401
思路:完全背包

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m;
    int p[1005],w[1005],f[10005];
    while(~scanf("%d%d",&n,&m))
    {
        memset(f,0x3f,sizeof f);
        int res=0x3f3f3f3f;
        int maxw=0;
        for(int i=0;i<n;i++) scanf("%d%d",&p[i],&w[i]),f[w[i]]=min(f[w[i]],p[i]);
        for(int i=0;i<n;i++)
            for(int j=w[i];j<=10000;j++)
            {
                f[j]=min(f[j],f[j-w[i]]+p[i]);
                if(j>=m)
                {
                    if(res>f[j]) res=f[j],maxw=j;
                    else if(res==f[j]&&j>maxw) maxw=j;
                } 
            }
        printf("%d %d\n",res,maxw);
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/c4Lnn/p/12090990.html