• <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 1235 Galactic Breakup 并查集

            題意:
            一個(gè)帝國(guó)有N個(gè)國(guó)家組成,每個(gè)國(guó)家包括Ni個(gè)區(qū)域(一個(gè)小方格),然后第i個(gè)國(guó)家在第i月會(huì)分離出去。問有多少個(gè)月帝國(guó)仍然是一個(gè)整體。
            PS:說道帝國(guó),就想到黃金雄教授在ICPC開幕式上用閩南語(yǔ)講的(。。。ACM大帝國(guó)。。),那發(fā)音,拿語(yǔ)言的組織都超級(jí)搞笑


            思路:
            并查集,逆向思維。最后所有的國(guó)家應(yīng)該都是獨(dú)立的。相當(dāng)于一個(gè)國(guó)家一個(gè)國(guó)家逐月的聯(lián)合起來。用并查集統(tǒng)計(jì)是否當(dāng)前集合為一個(gè)整體即可。暴力的方法沒實(shí)驗(yàn)過,不過復(fù)雜度會(huì)高達(dá)30^6,(*^__^*) 嘻嘻……,RP好的可以去拼一下~

            代碼:
             1 //============================================================================
             2 // Name        : pku1235.cpp
             3 // Author      : yzhw
             4 // Version     :
             5 // Copyright   : yzhw
             6 // Description : Hello World in C++, Ansi-style
             7 //============================================================================
             8 
             9 #include <iostream>
            10 #include <cstdio>
            11 #include <vector>
            12 #include <algorithm>
            13 using namespace std;
            14 # define LEFT (data[i][j]%(n*m))
            15 int set[30000],n,m,k,l,data[30000][21];
            16 bool used[30000];
            17 int find(int pos)
            18 {
            19     if(set[pos]==pos) return pos;
            20     else return set[pos]=find(set[pos]);
            21 }
            22 int main() {
            23     int testcase;
            24     scanf("%d",&testcase);
            25     while(testcase--)
            26     {
            27         scanf("%d%d%d%d",&n,&m,&k,&l);
            28         int total=0,ans=0,c;
            29         for(int i=0;i<n*m*k;i++)
            30             set[i]=i,used[i]=false;
            31         for(int i=0;i<l;i++)
            32         {
            33             scanf("%d",&data[i][0]);
            34             for(int j=1;j<=data[i][0];j++)
            35                 scanf("%d",&data[i][j]);
            36         }
            37         for(int i=l-1;i>=0;i--)
            38         {
            39             c=0;
            40             for(int j=1;j<=data[i][0];j++)
            41             {
            42                 vector<int> refer;
            43                 if(data[i][j]-n*m>=0&&used[data[i][j]-n*m]) refer.push_back(find(data[i][j]-n*m));
            44                 if(data[i][j]+n*m<n*m*k&&used[data[i][j]+n*m]) refer.push_back(find(data[i][j]+n*m));
            45                 if(LEFT%n!=0&&used[data[i][j]-1]) refer.push_back(find(data[i][j]-1));
            46                 if(LEFT%n!=n-1&&used[data[i][j]+1]) refer.push_back(find(data[i][j]+1));
            47                 if(LEFT/n!=0&&used[data[i][j]-n]) refer.push_back(find(data[i][j]-n));
            48                 if(LEFT/n!=m-1&&used[data[i][j]+n]) refer.push_back(find(data[i][j]+n));
            49                 sort(refer.begin(),refer.end());
            50                 vector<int>::iterator end=unique(refer.begin(),refer.end());
            51                 c+=end-refer.begin();
            52                 for(int t=0;t<end-refer.begin();t++)
            53                     set[find(refer[t])]=find(data[i][j]);
            54                 used[data[i][j]]=true;
            55             }
            56             total=total+data[i][0]-c;
            57             if(total==1) ans++;
            58         }
            59         printf("%d\n",l-ans);
            60     }
            61     return 0;
            62 }

            posted on 2011-01-20 20:44 yzhw 閱讀(144) 評(píng)論(0)  編輯 收藏 引用 所屬分類: data struct

            <2010年12月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            導(dǎo)航

            統(tǒng)計(jì)

            公告

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

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            午夜天堂av天堂久久久| 99久久婷婷国产一区二区| 91精品国产综合久久精品| 久久96国产精品久久久| 一本久久免费视频| 精品久久久久久久| 18禁黄久久久AAA片| 久久中文娱乐网| 伊人久久大香线蕉av不卡| 亚洲国产精品久久久久婷婷老年| 午夜精品久久影院蜜桃| 91精品国产综合久久婷婷| 欧美成人免费观看久久| 久久久久久久99精品免费观看| 久久婷婷是五月综合色狠狠| 青青国产成人久久91网| 亚洲成色www久久网站夜月| 久久男人中文字幕资源站| 久久99国产精品久久99| 亚洲国产精品久久电影欧美| 一97日本道伊人久久综合影院| 亚洲精品高清久久| 国产人久久人人人人爽| 亚洲AV无一区二区三区久久 | 久久精品桃花综合| 91久久香蕉国产熟女线看| 久久婷婷五月综合97色一本一本| 久久天天躁狠狠躁夜夜不卡| 久久久久亚洲av毛片大| 国产成人无码精品久久久免费| 久久精品国产亚洲AV无码麻豆 | 99久久精品国产一区二区| 久久91精品综合国产首页| 久久天堂电影网| 久久久九九有精品国产| 久久久久久免费一区二区三区 | 久久综合色老色| 婷婷久久综合| 综合网日日天干夜夜久久| 久久久久久久波多野结衣高潮 | 国产亚洲色婷婷久久99精品|