• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            pku 1176 Party Lamps

            這道題題意是:
            有N盞燈,每個燈有兩個狀態(tài):開、關。有4個按鈕,第一個按鈕使得所有燈改變狀態(tài),第二個按鈕使得奇數(shù)號燈改變狀態(tài),第三個按鈕使得偶數(shù)號燈改變狀態(tài),第四個按鈕使得3K+1號燈改變狀態(tài)。
            開始所有燈都是亮著的,給出操作次數(shù),最后亮著的燈和滅了的燈,求最后所有可能的狀態(tài)。
            這題可以用模二方程組來表示。設a、b、c、d分別為第一個、第二個、第三個、第四個按鈕按過的次數(shù)。count為操作總數(shù),滿足:
            如第k盞燈亮著
            如k%2==1&&(k-1)%3==0,則(a+b+d)%2=0
            如k%2==1&&(k-1)%3==1,則(a+b)%2=0
            如k%2==0&&(k-1)%3==0,則(a+c+d)%2=0
            如k%2==0&&(k-1)%3==1,則(a+c)%2=0
            如第k盞燈滅著
            如k%2==1&&(k-1)%3==0,則(a+b+d)%2=1
            如k%2==1&&(k-1)%3==1,則(a+b)%2=1
            如k%2==0&&(k-1)%3==0,則(a+c+d)%2=1
            如k%2==0&&(k-1)%3==1,則(a+c)%2=1

            開始想用高斯消元來處理這個方程組,后來一看變量只有4個。。而且是模二關系下的方程組,直接枚舉即可,總狀態(tài)數(shù)不過16種。然后構造解并hash判重即可。

            代碼如下:
             1import java.io.*;
             2import java.util.*;
             3public class Main {
             4
             5    /**
             6     * @param args
             7     */

             8    static int n=0,co=0,flag[]=new int [10];
             9    static char res[];
            10    static TreeSet<String> ans=new TreeSet<String>();
            11    static void makeans(int a,int b,int c,int d,int pos)
            12    {
            13        if(pos>n)
            14        {
            15            ans.add(new String(res));
            16        }

            17        else
            18        {
            19            if(pos%2==1)
            20                if((pos-1)%3==0)
            21                    res[pos-1]=(char)((a+b+d+1)%2+48);
            22                else
            23                    res[pos-1]=(char)((a+b+1)%2+48);
            24            else
            25                if((pos-1)%3==0)
            26                    res[pos-1]=(char)((a+c+d+1)%2+48);
            27                else
            28                    res[pos-1]=(char)((a+c+1)%2+48);
            29            makeans(a,b,c,d,pos+1);
            30        }

            31    }

            32    public static void main(String[] args) throws IOException{
            33        StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
            34        in.nextToken();
            35        n=(int)in.nval;;
            36        in.nextToken();
            37        co=(int)in.nval;
            38        Arrays.fill(flag,-1);
            39        flag[0]=co&1;
            40        res=new char[n];
            41        while(true)
            42        {
            43            in.nextToken();
            44            if((int)in.nval==-1break;
            45            int t=(int)in.nval;
            46            if((t&1)==1)
            47                if((t-1)%3==0)
            48                    flag[3]=0;
            49                else
            50                    flag[1]=0;
            51            else
            52                if((t-1)%3==0)
            53                    flag[4]=0;
            54                else
            55                    flag[2]=0;
            56        }

            57        while(true)
            58        {
            59            in.nextToken();
            60            if((int)in.nval==-1break;
            61            int t=(int)in.nval;
            62            if((t&1)==1)
            63                if((t-1)%3==0)
            64                    flag[3]=1;
            65                else
            66                    flag[1]=1;
            67            else
            68                if((t-1)%3==0)
            69                    flag[4]=1;
            70                else
            71                    flag[2]=1;
            72        }

            73        for(int a=0;a<=1;a++)
            74            for(int b=0;b<=1;b++)
            75                for(int c=0;c<=1;c++)
            76                    for(int d=0;d<=1;d++)
            77                    {
            78                        if(a+b+c+d>co) continue;
            79                        if(((a+b+c+d)&1)!=flag[0]) continue;
            80                        if(flag[1]!=-1&&((a+b)&1)!=flag[1]) continue;
            81                        if(flag[2]!=-1&&((a+c)&1)!=flag[2]) continue;
            82                        if(flag[3]!=-1&&((a+b+d)&1)!=flag[3]) continue;
            83                        if(flag[4]!=-1&&((a+c+d)&1)!=flag[4]) continue;
            84                        makeans(a,b,c,d,1);
            85                    }

            86        for(String p:ans)
            87           System.out.println(p);
            88    }

            89
            90}

            91

            posted on 2010-10-19 14:17 yzhw 閱讀(224) 評論(0)  編輯 收藏 引用 所屬分類: numberic

            <2010年10月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導航

            統(tǒng)計

            公告

            統(tǒng)計系統(tǒng)

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            欧美日韩精品久久久免费观看 | 久久久久亚洲av综合波多野结衣| 欧美精品一区二区精品久久| 久久成人国产精品二三区| 久久亚洲国产欧洲精品一| AA级片免费看视频久久| 久久亚洲欧洲国产综合| 午夜人妻久久久久久久久| 精品无码久久久久久尤物| 久久久久久国产a免费观看不卡| 中文字幕精品久久| 91精品国产综合久久久久久| 青青青青久久精品国产| 亚洲欧美国产精品专区久久| 99久久精品影院老鸭窝| 伊人色综合久久天天网| 九九99精品久久久久久| 久久久无码精品亚洲日韩京东传媒| 精品久久久久久久无码| 久久中文字幕视频、最近更新| 亚洲中文字幕无码久久2017 | 久久久久久青草大香综合精品| 久久人人爽人人爽AV片| 国产91色综合久久免费分享| 久久人人爽人人爽人人av东京热 | 久久亚洲精品无码VA大香大香| 国产精品久久久天天影视| 丁香色欲久久久久久综合网| 国产毛片久久久久久国产毛片 | 久久精品国产99久久丝袜| 久久精品国产亚洲av麻豆色欲| 色天使久久综合网天天 | 久久久久亚洲av无码专区喷水| 久久青青国产| 久久久久久久亚洲精品| 精品国产91久久久久久久a| 久久亚洲国产欧洲精品一| 久久天天躁狠狠躁夜夜躁2O2O| 一本一道久久综合狠狠老| 99久久精品免费看国产一区二区三区| 国产成人无码精品久久久免费|