lightoj 1200 水完全背包

来源:互联网 发布:领取淘宝优惠券的网站 编辑:程序博客网 时间:2024/06/05 09:01

把他需要的重量减掉来一个完全背包

#include<iostream>#include<cstdio>#include<algorithm>#include<memory.h>using namespace std;int p[101];int w[101];int yao[101];int dp[10001];int n,k;int u=0;int main(){    int T;    cin>>T;    while(T--)    {        memset(p,0,sizeof(p));        memset(w,0,sizeof(w));        memset(yao,0,sizeof(yao));        memset(dp,0,sizeof(dp));        cin>>n>>k;        long long bao=0;        for(int a=1;a<=n;a++)        {            scanf("%d%d%d",&p[a],&yao[a],&w[a]);            bao+=(w[a]*yao[a]);        }        if(bao>k)        {            printf("Case %d: Impossible\n",++u);            continue;        }        k-=bao;        for(int a=1;a<=n;a++)        {            for(int b=1;b<=k;b++)            {                if(b-w[a]>=0)                {                    dp[b]=max(dp[b],dp[b-w[a]]+p[a]);                }            }        }        printf("Case %d: %d\n",++u,dp[k]);    }    return 0;}
0 0