zoukankan      html  css  js  c++  java
  • poj2965 The Pilots Brothers' refrigerator

    无脑枚举题。。。

    #include<iostream>
    using namespace std;
    int t[5];
    int get_(int x){
        int r=0;
        while(x>0){
            if(x&1)++r;
            x>>=1;
        }
        return r;
    }
    void pr(int x){
        for(int i=0;i<4;++i){
            if(x&1)cout<<1<<" ";
            else cout<<0<<" ";
            x>>=1;
        }
        cout<<endl;
    }
    int main(){
        for(int i=0;i<4;++i){
            for(int j=0;j<4;++j){
                char c;
                cin>>c;
                if(c=='+')t[i]+=(1<<j);
            }
        }
        int ans=9999999,a1,a2,a3,a4;
        for(int i=0;i<(1<<4);++i){
            for(int j=0;j<(1<<4);++j){
                for(int k=0;k<(1<<4);++k){
                    for(int z=0;z<(1<<4);++z){
                        int kk[5];
                        memcpy(kk,t,sizeof(kk));
                        for(int p=0;p<4;++p){
                            if((1<<p)&i){
                                kk[0]^=((1<<4)-1);
                                for(int l=0;l<4;++l){
                                    if(l!=0){
                                        kk[l]^=(1<<p);        
                                    }
                                }
                            }
                            if((1<<p)&j){
                                kk[1]^=((1<<4)-1);
                                for(int l=0;l<4;++l){
                                    if(l!=1){
                                        kk[l]^=(1<<p);        
                                    }
                                }
                            }
                            if((1<<p)&k){
                                kk[2]^=((1<<4)-1);
                                for(int l=0;l<4;++l){
                                    if(l!=2){
                                        kk[l]^=(1<<p);        
                                    }
                                }
                            }
                            if((1<<p)&z){
                                kk[3]^=((1<<4)-1);
                                for(int l=0;l<4;++l){
                                    if(l!=3){
                                        kk[l]^=(1<<p);        
                                    }
                                }
                            }
                        }
                        if(kk[0]==0&&kk[1]==0&&kk[2]==0&&kk[3]==0){
                            if(ans>get_(i)+get_(j)+get_(k)+get_(z)){
                                ans=get_(i)+get_(j)+get_(k)+get_(z);
                                a1=i;a2=j;a3=k;a4=z;
                            }
                        }
                    }
                }
            }
        }
        int l=0;
        while(a1>0){
            ++l;
            if(a1&1)cout<<1<<" "<<l<<endl;
            a1>>=1;
        }
        l=0;
        while(a2>0){
            ++l;
            if(a2&1)cout<<2<<" "<<l<<endl;
            a2>>=1;
        }
        l=0;
        while(a3>0){
            ++l;
            if(a3&1)cout<<3<<" "<<l<<endl;
            a3>>=1;
        }
        l=0;
        while(a4>0){
            ++l;
            if(a4&1)cout<<4<<" "<<l<<endl;
            a4>>=1;
        }
        printf("%d",ans);
        return 0;
    }
    View Code
  • 相关阅读:
    BZOJ3779: 重组病毒
    BZOJ3112 [ZJOI2013]防守战线
    BZOJ4011 [HNOI2015]落忆枫音
    BZOJ2726 [SDOI2012]任务安排
    BZOJ1492 [NOI2007]货币兑换
    BZOJ1597 [USACO2008]土地购买
    BZOJ3611 [HEOI2014]大工程
    BZOJ3991 [SDOI2015]寻宝游戏
    BZOJ3675 [APIO2014]序列分割
    BZOJ1010 [HNOI2008]玩具装箱
  • 原文地址:https://www.cnblogs.com/Dream-Runner/p/10142462.html
Copyright © 2011-2022 走看看