• <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>
            posts - 101,  comments - 57,  trackbacks - 0
                   這是一題相當(dāng)有水平的并查集問(wèn)題。雖然我一次性ac,但是基本上是沒(méi)有任何思路搜索了一下牛人思路才過(guò)的。

                   思考這題時(shí),我陷入到了以下怪圈:
            1.并查集應(yīng)該是無(wú)限的,但是貌似這題的并集只有三個(gè)
            2.當(dāng)兩者關(guān)系未被確認(rèn)是哪個(gè)集合時(shí),會(huì)出現(xiàn)無(wú)限多的臨時(shí)子集
            3.如何表示臨時(shí)子集
              
                   看了看牛人的思路,相當(dāng)巧妙:并查集基本還是無(wú)限集,有限集用關(guān)系向量來(lái)表示。
            1.使用關(guān)系向量的方法,讓我獲益匪淺。
            2.計(jì)算關(guān)系向量的方法,又如此的巧合。
            3.并查集并不一定是相同的才并一起,又回歸到第一點(diǎn),當(dāng)關(guān)系向量可以用有限集表示時(shí),并查集里的元素可以不是同一類元素。

            最后還要說(shuō),這題相當(dāng)牛B.
            #include "stdio.h"

            #define MAX 50001

            #define Similar 0   
            #define Enemy   1
            #define Food    2
            //  Food eat Enemy
            //  Enemy eat Similar
            //  Similar eat Food

            struct _xtree
            {
                
            int parent;
                
            int relation;
            }
            xtree[MAX];

            int N, K;

            void build()
            {
                
            int i;
                
            for (i = 1; i <= N; i++)
                
            {
                    xtree[i].parent   
            = i;
                    xtree[i].relation 
            = Similar;
                }

            }


            int find(int i)
            {
                
            int p = xtree[i].parent;
                
            if (p != i)
                
            {
                    xtree[i].parent   
            = find(xtree[i].parent);
                    xtree[i].relation 
            = (xtree[p].relation + xtree[i].relation) % 3;
                }


                
            return xtree[i].parent;
            }


            int check(int x, int y, int r)
            {
                
            int root_x, root_y, root_r;

                
            if (x > N || y > N)
                
            {
                    
            return 0;
                }


                root_x 
            = find(x);
                root_y 
            = find(y);
                
                
            if (root_x == root_y)  // x relate y
                {        
                    
            return (xtree[x].relation - xtree[y].relation + 3% 3  == r ? 1 : 0;          
                }

                
            else
                
            {
                    root_r 
            =  (xtree[y].relation + r + (3 - xtree[x].relation)) % 3;
                    xtree[root_x].parent   
            = root_y;
                    xtree[root_x].relation 
            = root_r;
                    
            return 1;
                }

            }


            void main()
            {
                
            int op, x, y;
                
            int count = 0;

                scanf(
            "%d %d"&N, &K);

                build();

                
            while (K--)
                
            {
                    scanf(
            "%d %d %d"&op, &x, &y);
                   
                    
            if (!check(x, y, op == 1 ? Similar : Enemy))
                    
            {
                        count
            ++;
                    }
                        
                }

                printf(
            "%d\n", count);
            }


            posted on 2010-08-28 21:11 margin 閱讀(159) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            <2009年7月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            常用鏈接

            留言簿

            隨筆檔案

            文章分類

            文章檔案

            收藏夾

            常去的壇子

            • CVC電腦病毒論壇
            • 很多人說(shuō)我是AV,我告訴他們:別瞧不起人,我們也能創(chuàng)造價(jià)值
            • 安全焦點(diǎn)
            • 黑客聚集的地方,一般是好酒最多的地方...
            • 看雪論壇
            • 國(guó)內(nèi)最強(qiáng)的加密解密論壇,成醉其中經(jīng)常夜不歸宿
            • 驅(qū)動(dòng)開發(fā)論壇
            • 厭倦了啤的朋友們,來(lái)我們來(lái)整點(diǎn)白的...痛痛快快的BSOD也好過(guò)隔鞋瘙癢!

            我的朋友

            • Sen的blog
            • IDE方面資深的受害者...經(jīng)常為一個(gè)變量的定義找不著北的痛苦程序員(深表同情)
            • 老羅的blog
            • 良師益友,千年水牛,引擎猛男,分析怪獸,墨鏡酷哥,臺(tái)球高手....

            搜索

            •  

            最新評(píng)論

            久久综合狠狠综合久久综合88| 热久久这里只有精品| 久久人人爽人人爽人人片AV东京热 | 久久综合九色综合欧美就去吻| 久久这里有精品| 精品国产一区二区三区久久| 日本亚洲色大成网站WWW久久| 人妻丰满AV无码久久不卡| 91超碰碰碰碰久久久久久综合| 久久国产欧美日韩精品| 精品国产婷婷久久久| 久久精品国产网红主播| 色青青草原桃花久久综合| 欧美精品一区二区精品久久| 精品久久久中文字幕人妻| 久久久久久久久久免免费精品| av无码久久久久久不卡网站| 久久成人小视频| 久久伊人影视| 久久国产视频99电影| 精品精品国产自在久久高清| 亚洲欧洲日产国码无码久久99| 久久丝袜精品中文字幕| 伊人久久大香线蕉影院95| 久久青青草原精品国产| yy6080久久| 一本久道久久综合狠狠躁AV| 国产—久久香蕉国产线看观看| 国产精品久久国产精麻豆99网站| 亚洲国产另类久久久精品黑人| 日日狠狠久久偷偷色综合96蜜桃| 久久er国产精品免费观看8| 66精品综合久久久久久久| 久久精品一区二区三区不卡| 久久精品国产亚洲AV无码娇色| 少妇人妻88久久中文字幕| 久久综合狠狠综合久久综合88| 老色鬼久久亚洲AV综合| 精品久久久久久久久午夜福利| 97超级碰碰碰久久久久| 国产精品视频久久|