青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 101,  comments - 57,  trackbacks - 0
    這道題目(昂貴的聘禮)在poj上只有26%的ac率,貌似是第一道(總之是前幾道第一次引入的中文題目),別以為中文題目就容易。中文題目就好理解,這題有25%的submit是因為理解錯誤而wa的。
    言歸正傳...

    題意給出幾個節點要求最短的路徑。

    我建立的模型是這樣:括號中第一個表示錢,第二個是等級。

                +-- 8000 --(1000, 2)-- 200---+
                |                            |
    (10000, 3) -+                            +--(50, 2)
                |                            |
                +-- 5000 --(3000, 2)-- 200 --+


     第一個反映當然是“單元最短路徑”dijkstra算法來做,但是WA了幾次后才發現原來我理解等級錯誤了。

     如果A B C 的等級是 3 2 1, 而限制是1的話,那么從C -> A的路徑則視為非法。

     繼續做,對路徑進行動態的記錄。結果居然出現某些點無法到達的情況,例如:

     等級限制M = 1

                +--5000--(1000, 2)--200---+
                |                         |
    (10000, 3) -+                         +--([No.4] 200, 3)--50--([No.5] 50, 2) 
                |                         |
                +--5000--(3000, 4)--100 --+

     這種場景下,No.4節點由于dijkstra本身是一個貪心算法,所以會被下面的路徑標記。但是由于等級限制的限制No.5節點會被視為非法。而此題的正解應該是走上面的路徑,將No.5節點納入計算節點中。

     這時候就是說局部的最優解不是最終的最優解(是次優解),那么dijkstra算法就不能成立了。

     那就不能用dijkstra了嗎? 我看了看discus,很多人說用dp,用dfs等等...感覺很不甘心?。?br>
     在憋了兩天之后,我終于找到了一個辦法。

     直接用dijkstra肯定是不行的,如果對dijkstra做一些優化,對每個目標節點做一次dijkstra的枚舉就可以避免次優解的問題,如何來做呢?

     dijkstra算法的時候,指定一個目標節點,也就是說循環計算該圖的dijkstra,每次都是from 0 to i節點。

     這樣就能在一開始的時候得到0節點 和 目標節點能允許的等級范圍。以上圖為例,當枚舉到目標節點為No.5的時候,那么源節點的max_level = 3 + M = 4, min_level = 3 - 1 = 2,再計算No.5的等級限制為[1, 3]。將兩個等級merge一下,就是[2, 3],也就是說從源節點所有到No.5節點的level必須在[2, 3]的范圍內。

     那么在dijkstra的時候,對于level = 4的節點就被視為非法,不進入計算中。

     對dijkstra進行一些優化,比如當計算到目標節點已知的時候就可以結束了。

     還是要說這種的計算方法還是有優化的空間,畢竟在計算No.5的時候會用到前面計算的結果,可以考慮dp,但是這題的數據較弱,ac之后就不想再弄了。

     覺得上面雖然說了思路,還是給出代碼吧,這樣看得比較清楚,0ms ac。

  1#include <stdio.h>
  2
  3#define MAX_NODE 100
  4#define MAX_D    100000000
  5
  6int M, N;
  7
  8struct _Node
  9{
 10    int p;
 11    int l;
 12}
Node[MAX_NODE];
 13
 14int Engle[MAX_NODE][MAX_NODE] = {0};
 15
 16struct _Table
 17{
 18    int k;
 19    int d;
 20    int max_l;
 21    int min_l;
 22}
Table[MAX_NODE];
 23
 24int result = MAX_D;
 25
 26void dijkstra(int t)
 27{
 28    int i, min_d, min_n;
 29    int max_l, min_l;
 30    // init
 31    for (i = 0; i < N; ++i)
 32    {
 33        Table[i].k = 0;
 34        Table[i].d = MAX_D;
 35        Table[i].max_l = Node[i].l + M;
 36        Table[i].min_l = Node[i].l - M;
 37    }

 38    Table[0].d = 0;
 39    max_l = Table[0].max_l < Table[t].max_l ? Table[0].max_l : Table[t].max_l;
 40    min_l = Table[0].min_l > Table[t].min_l ? Table[0].min_l : Table[t].min_l;
 41    // dijkstra
 42    while (!Table[t].k)
 43    {    
 44        min_d = MAX_D;
 45        min_n = -1;
 46        // find min n;
 47        for (i = 0; i < N; i++)
 48        {
 49            if (!Table[i].k && Table[i].d < min_d)
 50            {
 51                min_d = Table[i].d;
 52                min_n = i;
 53            }

 54        }

 55        // break
 56        if (-1 == min_n)
 57            break;
 58        //
 59        for (i = 0; i < N; ++i)
 60        {
 61            if (   min_l <= Node[i].l && Node[i].l <= max_l
 62                && !Table[i].k
 63                && Engle[min_n][i]
 64                && Table[i].d > Engle[min_n][i] + Table[min_n].d)
 65            {
 66                Table[i].d = Engle[min_n][i] + Table[min_n].d;
 67            }

 68        }

 69        //
 70        Table[min_n].k = 1;
 71    }

 72    
 73    if (Table[t].k && result > Table[t].d + Node[t].p)
 74    {
 75        result = Table[t].d + Node[t].p;
 76    }

 77}

 78
 79
 80
 81void main()
 82{
 83    int P, L, X;
 84    int T, V;
 85    int i, n = 0;
 86
 87    scanf("%d %d"&M, &N);
 88    
 89    while (EOF != scanf("%d %d %d"&P, &L, &X))
 90    {
 91        Node[n].l = L;
 92        Node[n].p = P;
 93        for (i = 0; i < X; ++i)
 94        {
 95            scanf("%d %d"&T, &V);
 96            Engle[n][T - 1= V;            
 97        }

 98        n++;
 99    }

100
101    for (i = 0; i < N; ++i)
102    {
103        dijkstra(i);
104    }

105    printf("%d\n", result);        
106}





posted on 2011-05-14 00:16 margin 閱讀(506) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿

隨筆檔案

文章分類

文章檔案

收藏夾

常去的壇子

  • CVC電腦病毒論壇
  • 很多人說我是AV,我告訴他們:別瞧不起人,我們也能創造價值
  • 安全焦點
  • 黑客聚集的地方,一般是好酒最多的地方...
  • 看雪論壇
  • 國內最強的加密解密論壇,成醉其中經常夜不歸宿
  • 驅動開發論壇
  • 厭倦了啤的朋友們,來我們來整點白的...痛痛快快的BSOD也好過隔鞋瘙癢!

我的朋友

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

搜索

  •  

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            99精品视频免费观看| 一区二区av在线| 亚洲视频一区二区| 亚洲国产老妈| 亚洲第一中文字幕在线观看| 欧美成人精品福利| 欧美亚洲系列| 久久五月激情| 美女日韩欧美| 欧美性猛交视频| 欧美大片第1页| 国产一区二区欧美日韩| 免费成人网www| 亚洲电影免费| 蜜臀久久99精品久久久画质超高清| 久久国产精品高清| 亚洲欧洲精品一区二区三区| 久久手机免费观看| 亚洲精品日韩欧美| 销魂美女一区二区三区视频在线| 欧美另类在线观看| 99这里只有精品| 香蕉久久一区二区不卡无毒影院 | 欧美人与性动交cc0o| 美女精品在线观看| 一区在线影院| 亚洲国产精品福利| 尤物在线观看一区| 国产精品成人v| 欧美在线亚洲综合一区| 蜜乳av另类精品一区二区| 9国产精品视频| 久久亚洲色图| 奶水喷射视频一区| 亚洲激情综合| 激情久久久久| 狠狠色2019综合网| 国产精品网红福利| 欧美日韩精品一区二区三区四区 | 亚洲欧洲一区二区三区久久| 蜜桃av一区二区三区| 欧美不卡在线视频| 久久久九九九九| 国产亚洲一区二区精品| 欧美日韩三级一区二区| 一区二区三区精品久久久| 欧美黄色一级视频| 亚洲欧美成人精品| 欧美中文日韩| 久久综合网hezyo| 亚洲综合丁香| 久久精品亚洲一区| 欧美一区二区三区日韩视频| 久久婷婷影院| 亚洲韩国日本中文字幕| 亚洲永久免费观看| 欧美一区二区大片| 午夜欧美大尺度福利影院在线看| 亚洲欧洲日韩女同| 亚洲一品av免费观看| 欧美激情第三页| 欧美激情欧美狂野欧美精品| 欧美www视频| 一区二区日韩免费看| 欧美一级欧美一级在线播放| 老司机免费视频一区二区| 美女脱光内衣内裤视频久久影院 | 一区二区欧美日韩| 夜夜嗨av色一区二区不卡| 国产精品五区| 日韩视频精品在线| 久久精品国产99| 91久久精品国产91久久| 亚洲调教视频在线观看| 亚洲一区日韩| 国产亚洲免费的视频看| 日韩视频在线一区| 免费欧美在线| 久久激情视频久久| 久久久亚洲欧洲日产国码αv | 久久九九精品| 亚洲图片欧美午夜| 欧美日韩美女一区二区| 国内自拍一区| 一区二区福利| 亚洲一区二区黄| 国产精品欧美久久久久无广告| 亚洲精品国产精品久久清纯直播| 欧美本精品男人aⅴ天堂| 在线一区免费观看| 欧美日本精品| 一区二区三区三区在线| 亚洲男人的天堂在线观看 | 欧美影院成人| 久久国产婷婷国产香蕉| 伊人一区二区三区久久精品| 99riav1国产精品视频| 亚洲免费中文字幕| 久久久久九九视频| 国产麻豆精品久久一二三| 久久综合色88| 欧美特黄视频| 久久成人国产| 国产精品久久久久aaaa九色| 欧美激情第一页xxx| 国产毛片精品视频| 久久影院午夜论| 国产精品亚洲网站| 日韩亚洲精品在线| 欧美日一区二区在线观看| 亚洲高清自拍| 国产欧美日韩亚洲| 99re6这里只有精品| 欧美精品一卡二卡| 亚洲精品影院| 国产精品天天看| 美女久久网站| 欧美日韩另类在线| 久久综合九色综合欧美就去吻| 欧美日韩国产系列| 欧美va亚洲va国产综合| 亚洲免费在线| 免费日韩一区二区| 久久久久久久久久久一区| 欧美日韩一区二区三区在线观看免| 久久综合色播五月| 亚洲国产成人porn| 欧美日韩福利视频| 亚洲精品国产精品久久清纯直播| 国产日韩欧美中文在线播放| 卡通动漫国产精品| 亚洲二区视频| 一本久久青青| 亚洲国产天堂久久国产91| 欧美福利一区| 国产精品视频在线观看| 国产精品乱码久久久久久| 美女国内精品自产拍在线播放| 久久视频在线视频| 欧美精品日韩www.p站| 欧美精品一线| 久久亚洲精品一区二区| 宅男噜噜噜66国产日韩在线观看| 欧美韩国日本综合| 欧美va天堂| 日韩视频第一页| 亚洲精品在线三区| 欧美精品三级| 欧美裸体一区二区三区| 久久一区二区三区超碰国产精品| 欧美日韩国产成人在线观看| 欧美精品一线| 国产精品v欧美精品v日韩| 欧美激情一二三区| 久久视频免费观看| 一区二区高清在线| 亚洲国产综合视频在线观看| 最近看过的日韩成人| 亚洲黄色成人网| 欧美在线啊v一区| 国产精品久久激情| 一本大道久久a久久综合婷婷| 久久久久国色av免费看影院| 亚洲第一中文字幕在线观看| 最新69国产成人精品视频免费| 久久综合国产精品| 黄色一区三区| 亚洲美女视频网| 亚洲综合二区| 一区二区国产日产| 国产精品久久一区二区三区| 亚洲国产精品传媒在线观看| 久久香蕉国产线看观看av| 亚洲欧美日韩精品久久奇米色影视| 欧美99在线视频观看| 国产亚洲欧美一区二区| 亚洲国产精品嫩草影院| 久久精品国语| 亚洲欧美一区二区三区在线| 欧美日韩精品一本二本三本| 国产毛片一区二区| 亚洲一级片在线看| 99精品99| 狠狠v欧美v日韩v亚洲ⅴ| 蜜桃av噜噜一区| 欧美一区国产一区| 国产精品美女久久久浪潮软件| 一区二区毛片| 亚洲永久在线| 国产精品影视天天线| 欧美主播一区二区三区| 亚洲午夜一区二区三区| 久久久亚洲午夜电影| 欧美日韩一区二区三区在线观看免| 欧美资源在线观看| 麻豆精品视频在线观看| 亚洲一区精品电影| 伊人精品在线| 久久福利视频导航| 亚洲欧美中文另类|