zoukankan      html  css  js  c++  java
  • [POJ1014]Dividing(二进制优化多重背包)

    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    
    int T,A[10];
    bool f[100010];
    
    inline int read(){
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    
    int main(){
    	for(;;){
    		int s=0,fg=0;
    		for(int i=1;i<=6;++i)A[i]=read(),s+=A[i]*i;
    		if(!s)break;
    		printf("Collection #%d:
    ",++T);
    		if(s&1^1){//原来打成s^1&1WA了233
    			s>>=1,memset(f,0,sizeof(f)),f[0]=1;
    			for(int i=1;i<=6;++i){
    				for(int j=1;j<=A[i];j*=2){
    					for(int k=s;k>=j*i;--k)if(f[k-j*i])f[k]=1;
    					A[i]-=j; 
    				}
    				if(A[i])for(int k=s;k>=A[i]*i;--k)if(f[k-A[i]*i])f[k]=1;
    			}
    			if(f[s])fg=1;
    		}
    		if(fg)printf("Can be divided.
    
    ");else printf("Can't be divided.
    
    ");
    	}
    	return 0;
    }
    
  • 相关阅读:
    生成缩略图
    Log4net 记录日志
    cs端调用webApi
    抽象工厂
    简单工厂
    DataSet读取XML
    EntityFramework+WCF
    构造函数基础
    延迟加载
    位运算
  • 原文地址:https://www.cnblogs.com/void-f/p/9445530.html
Copyright © 2011-2022 走看看