zoukankan      html  css  js  c++  java
  • hdu 1059 Dividing(完全背包)

    /* ***********************************************
    Author        :xryz
    Email         :xiang578@foxmail.com
    Created Time  :2015/7/16 8:29:33
    File Name     :C:UsersAdministratorDesktop001.cpp
    ************************************************ */
    
    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <set>
    #include <map>
    #include <string>
    #include <math.h>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
    
    int sum,v,dp[50000];
    
    void zeroonepack(int cost,int weight)
    {
        for(int i=v; i>=cost; i--)
        {
            dp[i]=max(dp[i],dp[i-cost]+weight);
        }
    }
    
    void completepack(int cost ,int weight)
    {
        for(int i=cost; i<=v; i++)
        {
            dp[i]=max(dp[i],dp[i-cost]+weight);
        }
    }
    
    void multiplepack(int cost ,int weight,int amount)
    {
        if(cost*amount>=v)
        {
            completepack(cost,weight);
        }
        else
        {
            int k=1;
            while(k<amount)
            {
                zeroonepack(cost*k,weight*k);
                amount-=k;
                k*=2;
            }
            zeroonepack(cost*amount,weight*amount);
        }
    }
    int main()
    {
        //freopen("in.txt","r",stdin);
        //freopen("out.txt","w",stdout);
        int _=0,a[10],i;
        while(~scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]))
        {
            if(a[1]==0&&a[2]==0&&a[3]==0&&a[4]==0&&a[5]==0&&a[6]==0) break;
            sum=0;
            for(i=1; i<=6; i++)
                sum+=i*a[i];
            v=sum/2;
            memset(dp,0,sizeof(dp));
            for(i=1; i<=6; i++)
            {
                multiplepack(i,i,a[i]);
            }
            printf("Collection #%d:
    ",++_);
            if(sum==2*dp[v])
                printf("Can be divided.
    
    ");
            else
                printf("Can't be divided.
    
    ");
        }
        return 0;
    }
    

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    spring
    redis
    CentOS 6 安装教程(转载)
    Ajax&JSON
    课时2:RequestMapping映射及个属性
    课时1:SpringMVC环境搭建及第一个程序
    课时2:Spring整合MyBatis的几种方式 前面一个课时已经讲了一种思路了
    课时1:Spring整合MyBatis思路
    课时14:Bean的生命周期,通过import引入分散的spring文件
    课时13:作用域
  • 原文地址:https://www.cnblogs.com/xryz/p/4847940.html
Copyright © 2011-2022 走看看