• <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香蕉| 国产一区二区三区久久| 99久久er这里只有精品18| 99久久国产免费福利| 色综合久久久久久久久五月| 久久久久久久女国产乱让韩| 美女久久久久久| 久久最新免费视频| 伊人久久大香线蕉综合网站| 色天使久久综合网天天| 亚洲精品美女久久久久99小说| 久久无码人妻精品一区二区三区| 久久国产福利免费| 亚洲欧美日韩久久精品| 中文成人久久久久影院免费观看| 久久精品国产亚洲av麻豆蜜芽 | 久久国产精品成人免费| 狠狠色丁香婷综合久久| 2021国产成人精品久久| 久久99精品久久久久久噜噜| 亚洲中文字幕伊人久久无码| 无码人妻久久一区二区三区免费丨| 亚洲女久久久噜噜噜熟女| 国产精品国色综合久久| 精品久久久久久久久久久久久久久| 久久一本综合| 久久Av无码精品人妻系列| 欧美久久精品一级c片片| 青青草国产97免久久费观看| 亚洲精品无码久久千人斩| 久久精品国产一区| 久久久久久曰本AV免费免费| 国产亚洲精久久久久久无码| 久久久精品人妻无码专区不卡| 国产成年无码久久久免费| 国产精品欧美久久久久无广告 | 久久精品国产亚洲AV不卡| 久久不见久久见免费视频7| 久久男人中文字幕资源站| 一本久久知道综合久久| 狠狠色伊人久久精品综合网|