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

            閱讀排行榜

            国产精品成人久久久久久久| 色综合久久中文色婷婷| 狠狠色丁香久久婷婷综合_中| 久久久久亚洲精品无码网址| 欧美精品九九99久久在观看| 亚洲va久久久久| 亚洲va久久久噜噜噜久久| 久久久中文字幕| 一级女性全黄久久生活片免费| 伊人久久大香线蕉综合热线| 久久受www免费人成_看片中文 | 久久99精品国产麻豆婷婷| 欧美激情精品久久久久久久九九九| 97久久香蕉国产线看观看| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 国产精品va久久久久久久| 日韩精品久久久久久久电影蜜臀| 国产午夜精品理论片久久| 免费久久人人爽人人爽av| 2020最新久久久视精品爱| 7777精品久久久大香线蕉 | 青青国产成人久久91网| 亚洲狠狠婷婷综合久久蜜芽| 亚洲Av无码国产情品久久| 国产精品一区二区久久精品无码| 久久精品国产99久久久| 久久久无码精品亚洲日韩京东传媒 | 久久婷婷国产综合精品| 午夜精品久久影院蜜桃| 亚洲国产高清精品线久久| 夜夜亚洲天天久久| 久久99精品久久久久婷婷| 亚洲伊人久久精品影院| 伊人久久大香线蕉av不卡| 精品无码久久久久国产动漫3d| 伊人久久大香线蕉av不卡| 欧美牲交A欧牲交aⅴ久久| 久久精品青青草原伊人| 青青草原精品99久久精品66| 99久久国产综合精品麻豆| 97r久久精品国产99国产精|