zoukankan      html  css  js  c++  java
  • TYVJ 4354 多重背包二进制优化

    直接放代码了

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int Case,m,n,k,f[666666],xx,yy,zz,tot,w[666666],v[666666];
    int main()
    {
        scanf("%d",&Case);
        while(Case--)
        {
            memset(f,0,sizeof(f));
            memset(w,0,sizeof(w));
            memset(v,0,sizeof(v));
            tot=0;
            scanf("%d%d%d",&m,&n,&k);//(小吃的种类量 需要的填充值 可以使用的钱)
            for(int i=1;i<=m;i++)
            {
                scanf("%d%d%d",&xx,&yy,&zz);//x,y,z(第i种小吃的价钱,数量,填充值)
                int t=1;
                while(yy>=t)
                {
                    tot++;
                    yy=yy-t;
                    w[tot]=t*xx;      //w[] 表示花的钱 
                    v[tot]=t*zz;      //v[]表示填充值 
                    t*=2;
                }
                tot++;
                w[tot]=yy*xx;
                v[tot]=yy*zz;
            }
            for(int i=1;i<=tot;i++){
                for(int j=k;j>=w[i];j--)
                f[j]=max(f[j],f[j-w[i]]+v[i]);
            }
            if(n-f[k]>0)printf("%d
    ",n-f[k]);
            else printf("YES
    ");
        }
    }

    貌似目前只有两个人过了,另一个还是管理员
    这里写图片描述

  • 相关阅读:
    BD String
    1114
    1083
    1084
    1108
    1087
    1145
    1217
    1164
    反射
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/5831194.html
Copyright © 2011-2022 走看看