• <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個(gè)節(jié)點(diǎn)組成一個(gè)環(huán),相鄰節(jié)點(diǎn)間可以連邊,有m對(duì)點(diǎn)間需要通訊,問(wèn)最少要構(gòu)造多少通訊線路

            解答:
            首先,要明確一點(diǎn),a,b之間要通訊,只能有兩種通訊線路[1,a),[a,n),還有一個(gè)重要條件就是最多只需要構(gòu)建n-1條邊能將所有點(diǎn)聯(lián)通。這樣就只要枚舉斷電點(diǎn),所有對(duì)通訊節(jié)點(diǎn)中的連接方式就都確定了,因?yàn)檫B接路徑是互補(bǔ)的。斷開(kāi)一個(gè)點(diǎn),一條路徑就被砍斷了,只能選擇另外一條。然后統(tǒng)計(jì)覆蓋的點(diǎn)的時(shí)候建議使用樹(shù)狀數(shù)組,樹(shù)狀數(shù)組表示這種左開(kāi)右閉的區(qū)間是很給力的。左端點(diǎn)+1,右端點(diǎn)-1,復(fù)雜度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 閱讀(242) 評(píng)論(0)  編輯 收藏 引用 所屬分類: graphdata struct

            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            導(dǎo)航

            統(tǒng)計(jì)

            公告

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

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            欧美亚洲日本久久精品| 久久久久香蕉视频| 婷婷久久综合九色综合绿巨人| 精品一区二区久久| 午夜精品久久久久久| 色悠久久久久久久综合网| 久久丫忘忧草产品| 国产午夜精品理论片久久 | 97久久精品人妻人人搡人人玩| 国内精品久久久久久久coent| 久久精品国产亚洲Aⅴ香蕉| 国产精品久久久香蕉| 99久久无码一区人妻a黑| 亚洲一级Av无码毛片久久精品| 美女写真久久影院| 99久久成人国产精品免费| 蜜桃麻豆www久久| 免费久久人人爽人人爽av| 亚洲一本综合久久| 久久精品人人做人人爽电影| 热综合一本伊人久久精品| 99久久久精品| 久久久久久久久久久| 国产精品久久久久免费a∨| 国产综合久久久久| 久久无码专区国产精品发布| 国产69精品久久久久9999| 久久久中文字幕| 中文字幕精品无码久久久久久3D日动漫 | 性高朝久久久久久久久久| www.久久99| 久久综合给合久久狠狠狠97色| 久久久无码精品亚洲日韩京东传媒| 久久99精品久久久久久久不卡| 日本加勒比久久精品| 久久国产成人午夜aⅴ影院| jizzjizz国产精品久久| 欧洲人妻丰满av无码久久不卡| 伊人久久精品影院| 手机看片久久高清国产日韩| 久久99精品久久久久久秒播|