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

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

    題意給出幾個(gè)節(jié)點(diǎn)要求最短的路徑。

    我建立的模型是這樣:括號(hào)中第一個(gè)表示錢,第二個(gè)是等級(jí)。

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


     第一個(gè)反映當(dāng)然是“單元最短路徑”dijkstra算法來做,但是WA了幾次后才發(fā)現(xiàn)原來我理解等級(jí)錯(cuò)誤了。

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

     繼續(xù)做,對(duì)路徑進(jìn)行動(dòng)態(tài)的記錄。結(jié)果居然出現(xiàn)某些點(diǎn)無法到達(dá)的情況,例如:

     等級(jí)限制M = 1

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

     這種場(chǎng)景下,No.4節(jié)點(diǎn)由于dijkstra本身是一個(gè)貪心算法,所以會(huì)被下面的路徑標(biāo)記。但是由于等級(jí)限制的限制No.5節(jié)點(diǎn)會(huì)被視為非法。而此題的正解應(yīng)該是走上面的路徑,將No.5節(jié)點(diǎn)納入計(jì)算節(jié)點(diǎn)中。

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

     那就不能用dijkstra了嗎? 我看了看discus,很多人說用dp,用dfs等等...感覺很不甘心啊!

     在憋了兩天之后,我終于找到了一個(gè)辦法。

     直接用dijkstra肯定是不行的,如果對(duì)dijkstra做一些優(yōu)化,對(duì)每個(gè)目標(biāo)節(jié)點(diǎn)做一次dijkstra的枚舉就可以避免次優(yōu)解的問題,如何來做呢?

     dijkstra算法的時(shí)候,指定一個(gè)目標(biāo)節(jié)點(diǎn),也就是說循環(huán)計(jì)算該圖的dijkstra,每次都是from 0 to i節(jié)點(diǎn)。

     這樣就能在一開始的時(shí)候得到0節(jié)點(diǎn) 和 目標(biāo)節(jié)點(diǎn)能允許的等級(jí)范圍。以上圖為例,當(dāng)枚舉到目標(biāo)節(jié)點(diǎn)為No.5的時(shí)候,那么源節(jié)點(diǎn)的max_level = 3 + M = 4, min_level = 3 - 1 = 2,再計(jì)算No.5的等級(jí)限制為[1, 3]。將兩個(gè)等級(jí)merge一下,就是[2, 3],也就是說從源節(jié)點(diǎn)所有到No.5節(jié)點(diǎn)的level必須在[2, 3]的范圍內(nèi)。

     那么在dijkstra的時(shí)候,對(duì)于level = 4的節(jié)點(diǎn)就被視為非法,不進(jìn)入計(jì)算中。

     對(duì)dijkstra進(jìn)行一些優(yōu)化,比如當(dāng)計(jì)算到目標(biāo)節(jié)點(diǎn)已知的時(shí)候就可以結(jié)束了。

     還是要說這種的計(jì)算方法還是有優(yōu)化的空間,畢竟在計(jì)算No.5的時(shí)候會(huì)用到前面計(jì)算的結(jié)果,可以考慮dp,但是這題的數(shù)據(jù)較弱,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 閱讀(509) 評(píng)論(0)  編輯 收藏 引用

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


<2011年5月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用鏈接

留言簿

隨筆檔案

文章分類

文章檔案

收藏夾

常去的壇子

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

我的朋友

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

搜索

  •  

最新評(píng)論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美成人午夜激情视频| 亚洲第一区在线| 国产一区二区三区网站| 欧美在线在线| 欧美寡妇偷汉性猛交| 一区二区三区国产精华| 国产精品av一区二区| 欧美在线视频免费播放| 狼狼综合久久久久综合网| 91久久精品网| 国产精品久久久久久模特| 久久福利影视| 日韩视频亚洲视频| 久久激情视频久久| 亚洲欧洲一区二区三区在线观看| 欧美久久99| 欧美一区二区三区在线视频| 欧美成人亚洲成人| 午夜久久黄色| 亚洲电影第1页| 国产精品伦一区| 牛牛国产精品| 亚洲欧美福利一区二区| 美女黄色成人网| 亚洲在线电影| 亚洲日本成人女熟在线观看| 国产精品实拍| 欧美成人一区二区三区| 羞羞漫画18久久大片| 亚洲国产另类久久久精品极度| 先锋影音久久久| 亚洲精品久久久蜜桃| 国产日韩欧美在线看| 欧美激情一区二区三区在线| 亚洲专区一区| 亚洲精品在线电影| 美乳少妇欧美精品| 欧美亚洲日本国产| 一区二区三区欧美在线| 亚洲电影一级黄| 国产一区亚洲| 国产精品美女黄网| 欧美人与性动交a欧美精品| 久久精品首页| 亚洲欧美在线免费| 中文av字幕一区| 亚洲免费成人av| 亚洲国内精品| 亚洲成色精品| 国产精品乱码人人做人人爱| 男女精品网站| 久久久久亚洲综合| 亚洲欧美日韩国产| 中文在线一区| 日韩一级欧洲| 亚洲精品中文字| 亚洲国产一区二区三区在线播| 久久综合久色欧美综合狠狠| 欧美一区亚洲| 欧美一区二区高清| 亚洲免费视频观看| 亚洲伊人第一页| 亚洲综合国产| 亚洲欧美国产日韩中文字幕 | 国产日本精品| 国产精品女人毛片| 国产精品美女| 国产精一区二区三区| 国产欧美日韩中文字幕在线| 国产精品剧情在线亚洲| 国产精品激情av在线播放| 欧美日韩一区二区免费视频| 欧美日韩一二区| 欧美午夜视频在线观看| 欧美体内she精视频在线观看| 欧美偷拍一区二区| 欧美日韩亚洲91| 国产精品进线69影院| 国产精品久久久久一区二区| 国产精品久久久久久久久久三级| 欧美视频二区36p| 国产精品永久在线| 国产午夜精品理论片a级探花| 国产偷国产偷亚洲高清97cao| 国内揄拍国内精品久久| 尤物99国产成人精品视频| 亚洲国产精品一区二区第一页| 亚洲国产精品999| 日韩一区二区精品视频| 亚洲一区亚洲| 久久麻豆一区二区| 亚洲国产精品一区制服丝袜| 99精品99久久久久久宅男| 亚洲直播在线一区| 久久夜色精品国产欧美乱极品| 免费观看欧美在线视频的网站| 欧美精品激情在线观看| 国产精品一卡| 亚洲成色www久久网站| 亚洲另类视频| 欧美在线观看天堂一区二区三区| 久色婷婷小香蕉久久| 亚洲日本在线观看| 亚洲欧美中文字幕| 欧美 日韩 国产 一区| 国产精品电影观看| 一区二区在线观看视频| 99国产精品久久久久老师 | 亚洲国产精品久久久| aa级大片欧美| 久久久99爱| 欧美日韩一区在线| 国产一在线精品一区在线观看| 91久久精品一区二区别| 亚洲欧美另类中文字幕| 欧美激情第8页| 午夜欧美电影在线观看| 欧美电影资源| 国产亚洲欧美一区在线观看 | 免费一区二区三区| 一区二区免费看| 久久综合给合久久狠狠色| 国产精品美女主播| 亚洲国产成人在线播放| 欧美一区免费视频| 亚洲精品乱码久久久久久久久| 欧美一区二区私人影院日本 | 国产精品视频免费观看| 亚洲精品资源| 久久免费黄色| 亚洲天堂成人| 欧美欧美全黄| 亚洲电影在线观看| 欧美一区三区三区高中清蜜桃 | 亚洲精品小视频| 久久蜜桃av一区精品变态类天堂| 一区二区三区日韩在线观看| 欧美成人精品在线播放| 精品成人久久| 久久国产精彩视频| 亚洲一区二区三区免费在线观看| 欧美精品一区二区三区高清aⅴ| 韩曰欧美视频免费观看| 欧美在线观看视频在线| 中文亚洲字幕| 欧美性做爰毛片| 一区二区av在线| 亚洲欧洲精品成人久久奇米网| 久久久久久久欧美精品| 国产亚洲精品高潮| 久久精品二区| 欧美在线免费播放| 国内精品久久久久久 | 性欧美暴力猛交69hd| 99xxxx成人网| 欧美日韩亚洲一区二区三区在线观看| 亚洲精品美女| 最新国产成人在线观看 | 欧美精品激情| 99在线|亚洲一区二区| 亚洲大胆美女视频| 免费久久久一本精品久久区| 激情懂色av一区av二区av| 久久综合中文色婷婷| 久久精品男女| 亚洲国产成人在线| 亚洲激情一区二区| 欧美日韩久久久久久| 亚洲图片在区色| 亚洲一区成人| 国产亚洲精品久久久久久| 久久婷婷影院| 美国十次了思思久久精品导航| 亚洲国产高潮在线观看| 亚洲国产欧美一区二区三区同亚洲| 久久久久五月天| 亚洲乱码国产乱码精品精| 亚洲国产婷婷香蕉久久久久久| 欧美激情在线播放| 亚洲一区二区三区四区五区午夜| 中日韩高清电影网| 国模私拍一区二区三区| 老鸭窝91久久精品色噜噜导演| 美女啪啪无遮挡免费久久网站| 亚洲卡通欧美制服中文| 亚洲一本大道在线| 激情文学综合丁香| 亚洲欧洲一区二区三区在线观看 | 亚洲日本欧美| 国产精品乱人伦中文| 久久久噜噜噜久久中文字免| 蜜桃av噜噜一区| 亚洲午夜免费视频| 久久国产精品第一页| 亚洲精品美女久久7777777| 亚洲手机视频| 亚洲国产视频一区| 亚洲午夜在线| 亚洲人成网站在线播| 亚洲天堂av在线免费|