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

            poj1062

            昂貴的聘禮
            Time Limit: 1000MS Memory Limit: 10000K
            Total Submissions: 23885 Accepted: 6632

            Description

            年輕的探險家來到了一個印第安部落里。在那里他和酋長的女兒相愛了,于是便向酋長去求親。酋長要他用10000個金幣作為聘禮才答應(yīng)把女兒嫁給他。探險家拿不出這么多金幣,便請求酋長降低要求。酋長說:"嗯,如果你能夠替我弄到大祭司的皮襖,我可以只要8000金幣。如果你能夠弄來他的水晶球,那么只要5000金幣就行了。"探險家就跑到大祭司那里,向他要求皮襖或水晶球,大祭司要他用金幣來換,或者替他弄來其他的東西,他可以降低價格。探險家于是又跑到其他地方,其他人也提出了類似的要求,或者直接用金幣換,或者找到其他東西就可以降低價格。不過探險家沒必要用多樣東西去換一樣東西,因為不會得到更低的價格。探險家現(xiàn)在很需要你的幫忙,讓他用最少的金幣娶到自己的心上人。另外他要告訴你的是,在這個部落里,等級觀念十分森嚴。地位差距超過一定限制的兩個人之間不會進行任何形式的直接接觸,包括交易。他是一個外來人,所以可以不受這些限制。但是如果他和某個地位較低的人進行了交易,地位較高的的人不會再和他交易,他們認為這樣等于是間接接觸,反過來也一樣。因此你需要在考慮所有的情況以后給他提供一個最好的方案。
            為了方便起見,我們把所有的物品從1開始進行編號,酋長的允諾也看作一個物品,并且編號總是1。每個物品都有對應(yīng)的價格P,主人的地位等級L,以及一系列的替代品Ti和該替代品所對應(yīng)的"優(yōu)惠"Vi。如果兩人地位等級差距超過了M,就不能"間接交易"。你必須根據(jù)這些數(shù)據(jù)來計算出探險家最少需要多少金幣才能娶到酋長的女兒。

            Input

            輸入第一行是兩個整數(shù)M,N(1 <= N <= 100),依次表示地位等級差距限制和物品的總數(shù)。接下來按照編號從小到大依次給出了N個物品的描述。每個物品的描述開頭是三個非負整數(shù)P、L、X(X < N),依次表示該物品的價格、主人的地位等級和替代品總數(shù)。接下來X行每行包括兩個整數(shù)T和V,分別表示替代品的編號和"優(yōu)惠價格"。

            Output

            輸出最少需要的金幣數(shù)。

            Sample Input

            1 4
            10000 3 2
            2 8000
            3 5000
            1000 2 1
            4 200
            3000 2 1
            4 200
            50 2 0
            

            Sample Output

            5250
            很顯然構(gòu)圖成求最短路的問題
            開始寫了dijkstra,調(diào)了半天沒過,wa了好多次,糾結(jié)了,寫spfa過的
             1#include<stdio.h>
             2#include<string.h>
             3#include<math.h>
             4#define M 2100000000
             5#define MAX 100
             6int map[MAX+5][MAX+5];
             7int level[MAX+5],w[MAX+5];
             8int n,m;//等級限制m
             9//int ss[MAX+5];
            10int min(int a,int b)
            11{
            12    if (a<b) return a;
            13    else return b;
            14}

            15int spfa(int base)
            16{
            17    int xxx;
            18    int q[100000];
            19    int dist[MAX+5];
            20    short v[MAX+5];
            21    int i;
            22    int head,tail,sum,now;
            23    head=0;tail=1;
            24    q[tail]=1;
            25    memset(v,0,sizeof(v));v[1]=1;
            26    for (i=1;i<=n ;i++ ) dist[i]=M;
            27    dist[1]=0;
            28    while (head!=tail)
            29    {
            30        head=head+1;
            31        now=q[head];
            32        for (i=1;i<=n ;i++ )
            33        if (map[now][i]<M&&(level[i]>=base&&level[i]<=base+m)&&dist[i]>dist[now]+map[now][i])
            34        {
            35            dist[i]=dist[now]+map[now][i];
            36            if (!v[i])
            37            {
            38                tail++;
            39                q[tail]=i;
            40                v[i]=1;
            41            }

            42        }

            43        v[now]=0;
            44    }

            45    xxx=M+1;
            46    for (i=1;i<=n ;i++ )
            47    if (level[i]>=base&&level[i]<=base+m)
            48    {
            49        xxx=min(xxx,dist[i]+w[i]);
            50    }

            51    return xxx;
            52}

            53int main()
            54{
            55    int i,j,x,ans;
            56    int sec,data;
            57    for (i=0; i<MAX+5 ; i++ )
            58        for (j=0; j<MAX+5 ; j++)
            59            map[i][j]=M;
            60    scanf("%d%d",&m,&n);
            61    for (i=1; i<=n ; i++ )
            62    {
            63        scanf("%d%d%d",&w[i],&level[i],&x);
            64        for (j=1; j<=x ; j++ )
            65        {
            66            scanf("%d%d",&sec,&data);
            67            map[i][sec]=data;
            68        }

            69    }

            70    ans=M;
            71    for (i=level[1]-m; i<=level[1]; i ++)
            72        ans=min(ans,spfa(i));
            73    printf("%d\n",ans);
            74    return 0;
            75}

            76

            posted on 2012-02-05 20:57 jh818012 閱讀(158) 評論(0)  編輯 收藏 引用

            <2012年9月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            30123456

            導航

            統(tǒng)計

            常用鏈接

            留言簿

            文章檔案(85)

            搜索

            最新評論

            • 1.?re: poj1426
            • 我嚓,,輝哥,,居然搜到你的題解了
            • --season
            • 2.?re: poj3083
            • @王私江
              (8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)
            • --游客
            • 3.?re: poj3414[未登錄]
            • @王私江
              0ms
            • --jh818012
            • 4.?re: poj3414
            • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
            • --王私江
            • 5.?re: poj1426
            • 評論內(nèi)容較長,點擊標題查看
            • --王私江
            久久人人爽人人人人爽AV| 色综合久久综精品| 亚洲中文字幕无码一久久区| 狠狠综合久久AV一区二区三区| 午夜人妻久久久久久久久| 久久婷婷国产麻豆91天堂| 欧美午夜A∨大片久久 | 久久国产精品-国产精品| 国产日韩欧美久久| 久久久久人妻精品一区二区三区 | 精品无码久久久久久久久久| 久久久久久久91精品免费观看| 久久久噜噜噜久久中文福利| 久久久久无码中| 国产日产久久高清欧美一区| 久久国产AVJUST麻豆| 久久99精品久久久久久9蜜桃| 四虎影视久久久免费| 99精品伊人久久久大香线蕉 | 人人狠狠综合久久亚洲88| 久久久久久精品免费看SSS| 99久久婷婷国产一区二区| 久久亚洲精品中文字幕| 青青草原综合久久大伊人| 久久精品国产一区二区三区不卡| 2020久久精品国产免费| 久久亚洲精品无码AV红樱桃| 亚洲国产欧洲综合997久久| 99久久做夜夜爱天天做精品| 久久久综合香蕉尹人综合网| 97精品国产97久久久久久免费| 国产精品国色综合久久| 久久99精品久久久久婷婷| 久久w5ww成w人免费| 漂亮人妻被黑人久久精品| 欧美熟妇另类久久久久久不卡| 中文字幕无码精品亚洲资源网久久| 合区精品久久久中文字幕一区| 亚洲欧洲中文日韩久久AV乱码| 亚洲精品97久久中文字幕无码| 日本久久中文字幕|