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

            pku1944 Fiber Communications 圖論好題!總體上的觀察,算法不難

            題意:
            n個節點組成一個環,相鄰節點間可以連邊,有m對點間需要通訊,問最少要構造多少通訊線路

            解答:
            首先,要明確一點,a,b之間要通訊,只能有兩種通訊線路[1,a),[a,n),還有一個重要條件就是最多只需要構建n-1條邊能將所有點聯通。這樣就只要枚舉斷電點,所有對通訊節點中的連接方式就都確定了,因為連接路徑是互補的。斷開一個點,一條路徑就被砍斷了,只能選擇另外一條。然后統計覆蓋的點的時候建議使用樹狀數組,樹狀數組表示這種左開右閉的區間是很給力的。左端點+1,右端點-1,復雜度n2logn。

            代碼 
             1 # include <cstdio>
             2 # include <utility>
             3 # include <functional>
             4 # include <iostream>
             5 # include <algorithm>
             6 # include <cstring>
             7 # define lowbit(a) (a&-a)
             8 using namespace std;
             9 int arr[1005],n,m;
            10 pair<int,int>data[10005];
            11 void add(int p,int num)
            12 {
            13    while(p<=n) 
            14       arr[p]+=num,p+=lowbit(p);
            15 }
            16 int sum(int p)
            17 {
            18     int res=0;
            19     while(p>0
            20       res+=arr[p],p-=lowbit(p);
            21     return res;
            22 }
            23 int main()
            24 {
            25     scanf("%d%d",&n,&m);
            26     for(int i=0;i<m;i++)
            27     {
            28       scanf("%d%d",&data[i].first,&data[i].second);
            29       if(data[i].first>data[i].second)
            30         swap(data[i].first,data[i].second);
            31     }
            32     int ans=0xfffffff;
            33     for(int i=1;i<=n;i++)
            34     {
            35         memset(arr,0,sizeof(arr));
            36         for(int j=0;j<m;j++)
            37             if(data[j].first<=i&&data[j].second>i)
            38                 add(1,1),add(data[j].first,-1),add(data[j].second,1);
            39             else
            40                 add(data[j].first,1),add(data[j].second,-1);
            41         int res=0;
            42         for(int j=1;j<=n;j++)
            43            if(sum(j)>0)
            44                res++;
            45         if(res<ans) ans=res;
            46     }
            47     printf("%d\n",ans);
            48     return 0;
            49 }

            posted on 2011-02-05 01:20 yzhw 閱讀(237) 評論(0)  編輯 收藏 引用 所屬分類: graphdata struct

            <2011年10月>
            2526272829301
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            青青青青久久精品国产| 久久人人爽人人人人片av| 久久精品视频网| 久久久久香蕉视频| 欧美精品丝袜久久久中文字幕| 免费久久人人爽人人爽av| 久久久精品2019免费观看| 久久93精品国产91久久综合| 中文字幕久久波多野结衣av| 免费观看成人久久网免费观看| 亚洲欧美另类日本久久国产真实乱对白 | 久久人人爽人人爽人人片AV麻豆 | 国产精品国色综合久久| 久久精品国产亚洲AV不卡| 久久综合给久久狠狠97色| 久久九色综合九色99伊人| 久久亚洲精品成人av无码网站| 久久青青草原亚洲av无码| 91久久精品91久久性色| 国产精品VIDEOSSEX久久发布| 日韩精品久久久久久久电影蜜臀| 久久国产视屏| 精品国产一区二区三区久久蜜臀| 成人综合伊人五月婷久久| 久久久婷婷五月亚洲97号色| 久久精品无码一区二区WWW| 欧美伊人久久大香线蕉综合69| 日韩亚洲欧美久久久www综合网| 久久久久AV综合网成人| 综合人妻久久一区二区精品| 久久婷婷五月综合国产尤物app| 久久露脸国产精品| 日本国产精品久久| 久久久亚洲精品蜜桃臀| 久久这里有精品视频| 午夜精品久久久久久影视777| 久久精品成人影院| 青青草原综合久久大伊人导航 | 久久久久99精品成人片欧美 | 国产精品国色综合久久| 久久久久无码精品国产|