zoukankan      html  css  js  c++  java
  • cogs 53 多人背包

    /*
    要求每个最优 即累加前k优解
    注意不用去重 
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define maxn 210
    #define maxm 5010
    #define maxk 60
    using namespace std;
    int n,m,k,w[maxn],v[maxn],f[maxm][maxk];
    int x[maxk],y[maxk],a,b,z,ans;
    int init()
    {
        int x=0;bool f=0;char s=getchar();
        while(s<'0'||s>'9'){if(s=='-')f=1;s=getchar();}
        while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
        if(f)return -x; return x;
    }
    int main()
    {
        //freopen("bags.in","r",stdin);
        //freopen("bags.out","w",stdout);
        k=init();m=init();n=init();
        for(int i=1;i<=n;i++)
          w[i]=init(),v[i]=init();
        memset(f,128,sizeof(f));
        f[0][1]=0;
        for(int i=1;i<=n;i++)
          {
              for(int j=m;j>=w[i];j--)
                {
                    for(int l=1;l<=k;l++)
                      {
                          x[l]=f[j][l];
                          y[l]=f[j-w[i]][l]+v[i];
                  }
                a=b=z=1;
                x[k+1]=y[k+1]=-1;
                while(z<=k&&(x[a]!=-1||y[b]!=-1))
                  {
                      if(x[a]>y[b])f[j][z]=x[a],a++;
                      else f[j][z]=y[b],b++;
                      z++;
                  }
              }
          }
        for(int i=1;i<=k;i++)
          ans+=f[m][i];
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    1015,存储过程,视图
    1009,数据库查询,聚合函数,日期时间函数
    1008,数据库表格创建,名称,格式

    公历和农历转换的JS代码
    面向对象之封装
    HTML之锚点
    HTML之css+div
    HTML基础
    SQL之定义变量
  • 原文地址:https://www.cnblogs.com/yanlifneg/p/5562668.html
Copyright © 2011-2022 走看看