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

            Input

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

            Output

            輸出最少需要的金幣數。

            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
            很顯然構圖成求最短路的問題
            開始寫了dijkstra,調了半天沒過,wa了好多次,糾結了,寫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)  編輯 收藏 引用

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            常用鏈接

            留言簿

            文章檔案(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
            • 評論內容較長,點擊標題查看
            • --王私江
            国产精品久久久久a影院| 久久se精品一区二区| 武侠古典久久婷婷狼人伊人| 国内精品欧美久久精品| 蜜臀久久99精品久久久久久| 日韩乱码人妻无码中文字幕久久| 国产精品99精品久久免费| 久久久久久亚洲精品不卡 | 久久久久18| 一本一本久久A久久综合精品| 久久久久亚洲AV无码麻豆| 国产精品成人99久久久久91gav| 青青草原综合久久大伊人| 亚洲精品无码久久久久久| 国产精久久一区二区三区| 色婷婷综合久久久中文字幕| 久久99精品久久久久久水蜜桃| 国产亚洲精久久久久久无码77777| 99久久精品免费| 91精品国产9l久久久久| 国内精品伊人久久久久妇| 国产激情久久久久影院老熟女| 久久午夜无码鲁丝片| 亚洲国产香蕉人人爽成AV片久久| 青青青国产精品国产精品久久久久 | 国产精品欧美久久久天天影视 | 亚洲国产精品无码久久一区二区| 精品国产婷婷久久久| 一本久久a久久精品综合夜夜| 精品久久久无码人妻中文字幕豆芽 | 久久成人精品| 精品无码人妻久久久久久| 精品亚洲综合久久中文字幕| 久久九九兔免费精品6| 亚洲一区精品伊人久久伊人 | 久久久婷婷五月亚洲97号色| 久久SE精品一区二区| 伊人色综合久久天天人手人婷 | 国产免费久久精品丫丫| 国产2021久久精品| 欧洲国产伦久久久久久久|