• <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>

            The Fourth Dimension Space

            枯葉北風(fēng)寒,忽然年以殘,念往昔,語默心酸。二十光陰無一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢令

            [POI2005]Kos-Dicing 二分+最大流

            原來網(wǎng)絡(luò)流也能二分,今天終于見識了。。。
            二分+最大流
            題目大意:給定n個人m場比賽,問贏的最多的人最少贏幾場
             二分答案,增加源匯點,左邊一排是比賽點,右邊是球員,若有比賽,比賽向倆球員連容量為1的邊
            源點向比賽連容量為1的邊,球員向匯點連容量為二分枚舉值的邊,判斷是最大流是否等于比賽個數(shù)

            網(wǎng)絡(luò)流的構(gòu)圖真是個神奇的東西,我承認(rèn)如果不看網(wǎng)上的解題報告,我真的很難想到,首先是題意不太明確,剛開始我還以為贏的最多的選手勝利的場次必須是最多的。。。但是從樣例來看,貌似就算每個人都贏一場也會有冠軍出現(xiàn)。。。說說我的理解吧,從超級源點引一條邊至代表每場比賽的節(jié)點,限制每場比賽的勝利者只有一個人,這個流量如果在射出到某個選手的一條邊中,代表這場比賽是他取勝。每個選手到匯點連一條二分枚舉的邊,就是限制勝利場次的上界,如果最后的最大流等于m,說明這m場比賽的的勝者可以合理的分配,如果不能,說明比賽不能正常進(jìn)行。又可以分析得出,如果某一個二分值mid滿足要求,那么比他大的值一定也滿足要求。故可二分枚舉答案。(PS:這題的復(fù)雜度應(yīng)該是(10000+10000+2)^2*(m*2+m+n)*log 10000.總覺得要超時啊。。。難道數(shù)據(jù)弱了?)

            int n,m;

            struct node2
            {
                
            int a,b;
            }
            re[100000];

            bool check(int n,int m,int mid)
            {
                
            int i;
                
            for(i=0;i<n+m+2;i++)
                    adj[i]
            =NULL;
                len
            =0;
                
            int s=n+m;
                
            int t=s+1;
                
            for(i=0;i<m;i++)
                    insert(s,i,
            1);
                
            for(i=0;i<n;i++)
                    insert(m
            +i,t,mid);
                
            for(i=0;i<m;i++)
                
            {
                    insert(i,m
            +re[i].a,1);
                    insert(i,m
            +re[i].b,1);
                }

                
            return dinic(t+1,s,t)==m;
            }


            int main()
            {
                
            int i;
                
            while(scanf("%d%d",&n,&m)!=EOF)
                
            {
                    
            for(i=0;i<m;i++)
                    
            {
                        scanf(
            "%d%d",&re[i].a,&re[i].b);
                        re[i].a
            --;
                        re[i].b
            --;
                    }

                    
            int l=1,r=m;
                    
            int ans=-1;
                    
            while(l<=r)
                    
            {

                        
            int mid=(l+r)>>1;
                        
            if(check(n,m,mid))
                        
            {
                            ans
            =mid;
                            r
            =mid-1;
                        }

                        
            else
                            l
            =mid+1;
                    }

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

                
            return 0;


            }

            posted on 2010-07-17 20:43 abilitytao 閱讀(1639) 評論(1)  編輯 收藏 引用

            評論

            # re: [POI2005]Kos-Dicing 二分+最大流[未登錄] 2010-07-19 11:13 1

            在數(shù)組中insert,時間會更長  回復(fù)  更多評論   


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


            亚洲精品国产自在久久| 久久久久这里只有精品 | 亚洲国产精品无码久久九九 | 精品国产乱码久久久久软件 | 四虎国产精品免费久久| yy6080久久| 精品久久久久久亚洲| 久久综合五月丁香久久激情| 波多野结衣AV无码久久一区| 青青草原1769久久免费播放| 欧美日韩久久中文字幕| 久久狠狠色狠狠色综合| 伊人伊成久久人综合网777| 狠狠色丁香久久综合婷婷| 2021最新久久久视精品爱| 国产国产成人精品久久| yy6080久久| 一级做a爰片久久毛片看看| 亚洲国产成人久久精品动漫| 国产精品久久久久蜜芽| 久久精品国产99久久丝袜| 久久久久高潮毛片免费全部播放| 亚洲国产成人精品无码久久久久久综合| 久久久无码精品亚洲日韩按摩 | 一本色道久久88精品综合| 精品久久久久久久中文字幕| 精品久久久久香蕉网| 囯产精品久久久久久久久蜜桃| 久久久久久极精品久久久| 69SEX久久精品国产麻豆| 久久精品99久久香蕉国产色戒| 亚洲AV无码久久精品色欲| 久久久SS麻豆欧美国产日韩| 2021国产精品午夜久久| 亚洲国产成人精品无码久久久久久综合| 99久久免费只有精品国产| 久久最新精品国产| 青青草原1769久久免费播放| 国产精品久久成人影院| 青青青国产精品国产精品久久久久| 国产精品一区二区久久精品|