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

            pku1334 Two Mountaineers 貪心+分類討論

            題意:

            兩個人爬山,時刻要保證在同一水平面上,直到兩人互換位置。問走過的最短距離。兩點間距離定義為兩點間的y軸絕對值差。
            給力條件:除了首尾兩點每個點的y坐標均不相同

            解法:
            DP?殺雞用牛刀,沒必要!
            貪心!
            首先明確,不能走回頭路,這里的回頭路指完全退回到上個步驟所在的點,顯然,這樣的走法是無意義的。
            設置兩個指針,p1指向頭,p2指向尾,循環至兩個指針重疊。下面具體分四種情況討論:
            1、如果yp1+1>yp1且yp2-1>yp2,這種情況下當然山峰高的幫助山峰低的越過低的山峰

            2、如果yp1+1>yp1且yp2-1<yp2,這種情況又要分兩種情況:
                  2.1 如果(p1,p1+1)這段上坡通過局部回退能夠讓p2度過這個山谷,顯然這樣就是p2--
                  2.2 否則p1必須回退至上個拐點,試圖獲得更低的高度,這樣就是p1--
            3、如果yp1+1<yp1且yp2-1>yp2,與上種情況類似,不加贅述。
            4、如果yp1+1<yp1且yp2-1<yp2,這種情況不應該是正常情況下應該出現的,因該是碰到某個很深的山谷后上坡段回退形成的,這時候應該繼續后退,以尋求更低點。

            代碼里寫的很清楚,大家看代碼吧:
             1# include <cstdio>
             2using namespace std;
             3# define min(a,b) ((a)<(b)?(a):(b))
             4# define max(a,b) ((a)>(b)?(a):(b))
             5int p[1001][2],n,p1,p2,ans,last;
             6int main()
             7{
             8    int test;
             9    scanf("%d",&test);
            10    while(test--)
            11    {
            12        scanf("%d",&n);
            13        for(int i=0;i<n;i++)
            14          scanf("%d %d",&p[i][0],&p[i][1]);
            15        p1=0,p2=n-1,ans=0;
            16        last=p[0][1];
            17        while(p2>p1)
            18        {
            19           if(p[p2-1][1]>p[p2][1]&&p[p1+1][1]>p[p1][1])
            20           {
            21                ans+=2*(min(p[p2-1][1],p[p1+1][1])-last);
            22                last=min(p[p2-1][1],p[p1+1][1]);
            23                if(p[p2-1][1]==last) p2--;
            24                if(p[p1+1][1]==last) p1++;
            25           }

            26           else if(p[p2-1][1]<p[p2][1]&&p[p1+1][1]>p[p1][1])
            27           {
            28              ans+=2*(last-max(p[p2-1][1],p[p1][1]));
            29              last=max(p[p2-1][1],p[p1][1]);
            30              if(last==p[p2-1][1]) p2--;
            31              else p1--;
            32           }

            33           else if(p[p2-1][1]>p[p2][1]&&p[p1+1][1]<p[p1][1])
            34           {
            35            ans+=2*(last-max(p[p2][1],p[p1+1][1]));
            36            last=max(p[p2][1],p[p1+1][1]);
            37            if(last==p[p1+1][1]) p1++;
            38            else p2++;
            39           }

            40           else
            41           {
            42              ans+=2*(min(p[p1][1],p[p2][1])-last);
            43              last=min(p[p1][1],p[p2][1]);
            44              if(last==p[p1][1]) p1--;
            45              else p2++;
            46           }

            47        }

            48        printf("%d\n",ans*2);
            49    }

            50    return 0;
            51}

            52

            posted on 2011-01-26 00:58 yzhw 閱讀(258) 評論(0)  編輯 收藏 引用 所屬分類: others

            <2011年1月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            久久精品国产99国产精品导航| 2021久久精品国产99国产精品| 久久精品免费观看| 精品乱码久久久久久夜夜嗨| 久久久精品日本一区二区三区 | 国产一久久香蕉国产线看观看| 996久久国产精品线观看| 久久精品亚洲乱码伦伦中文 | 久久久久99精品成人片| 97视频久久久| 狠狠久久综合伊人不卡| 日韩人妻无码精品久久久不卡 | 亚洲国产精品无码久久九九 | 亚洲国产成人久久精品影视| 日韩久久久久中文字幕人妻| 国产精品久久久久久一区二区三区| 久久伊人精品青青草原日本| 97久久久久人妻精品专区| 手机看片久久高清国产日韩| 99久久夜色精品国产网站| 国内精品综合久久久40p| 欧美久久天天综合香蕉伊| 久久久久久久人妻无码中文字幕爆| 久久强奷乱码老熟女| 久久国产乱子伦精品免费强| 亚洲中文字幕久久精品无码喷水| 久久99亚洲综合精品首页| 久久青草国产精品一区| 热re99久久6国产精品免费| 久久99精品国产麻豆宅宅| 久久久国产99久久国产一| 久久这里有精品视频| 人妻中文久久久久| 久久高潮一级毛片免费| 久久国产高清一区二区三区| 久久99精品久久久久久不卡 | 国产精品久久久久久福利漫画| 色综合久久中文字幕无码| 亚洲国产精品无码久久久蜜芽| 久久久久久午夜精品| 免费精品久久天干天干|