zoukankan      html  css  js  c++  java
  • poj 1014 Dividing

    http://poj.org/problem?id=1014

    思路

    大概是裸的多重背包  复杂度

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    const int maxn = 6e4+100;
    int s[7],dp[maxn];
    
    void init()
    {
        memset(dp,0,sizeof(dp));
    }
    
    int main()
    {
        int cas =1;
        while (cin>>s[1]>>s[2]>>s[3]>>s[4]>>s[5]>>s[6])
        {
            init();
            int sum =0;
            for(int i=1;i<=6;i++)
                sum+=i*s[i];
            if(sum == 0)
                break;
            if(sum&1)
            {
                printf("Collection #%d:
    ",cas++);
                printf("Can't be divided.
    
    ");
            }
            else
            {
                sum /= 2;
                for(int i=1;i<=6;i++)
                {
                    if(s[i]==0) continue;
                    if(i*s[i] > sum)
                    {
                        for(int j=i;j<=sum;j++)
                        {
                            dp[j] = max(dp[j],dp[j-i]+i);
                        }
                    }
                    else
                    {
                        int k=1,t=s[i];
                        while (k<t)
                        {
                            for(int j=sum;j>= k*i;j--)
                                dp[j] = max(dp[j],dp[j-i*k]+i*k);
                            t-=k,k*=2;
                        }
                        for(int j=sum;j >=t*i;j--)
                        {
                            dp[j] = max(dp[j],dp[j-i*t]+i*t);
                        }
                    }
                }
                if(dp[sum] == sum)
                {
                    printf("Collection #%d:
    ",cas++);
                    printf("Can be divided.
    
    ");
                }
                else
                {
                    printf("Collection #%d:
    ",cas++);
                    printf("Can't be divided.
    
    ");
                }
            }
    
        }
    }
  • 相关阅读:
    C# 学习之旅(1)
    SqlServer安装教程
    Aop和Filter区别
    Redis入门
    SpringMVC与Struts2的主要区别
    SpringMVC执行流程
    ssm初始化环境搭建
    Oracle 高效分页
    Oracle 综合:游标和动态SQL
    Oracle 动态SQL
  • 原文地址:https://www.cnblogs.com/Draymonder/p/7358010.html
Copyright © 2011-2022 走看看