• <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 閱讀(247) 評論(0)  編輯 收藏 引用 所屬分類: others

            <2010年10月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            老司机国内精品久久久久| 久久精品国产2020| 久久这里只有精品久久| 日韩精品国产自在久久现线拍| 国产精品成人久久久久久久| 久久中文字幕无码专区| 亚洲综合精品香蕉久久网| 国产一区二区三区久久精品| 久久精品亚洲精品国产欧美| 久久久久久久女国产乱让韩| 99久久伊人精品综合观看| 成人午夜精品无码区久久| 精品久久久久久无码国产| 久久w5ww成w人免费| 亚洲国产成人精品女人久久久| 成人久久久观看免费毛片| 久久毛片一区二区| 久久久91人妻无码精品蜜桃HD| 成人国内精品久久久久影院| 7777久久久国产精品消防器材| 久久久精品人妻无码专区不卡| 热re99久久精品国产99热| 久久国产精品77777| 久久综合香蕉国产蜜臀AV| 精品综合久久久久久98| 久久亚洲av无码精品浪潮| 国产精品无码久久久久| 一本大道久久a久久精品综合| 欧美大香线蕉线伊人久久| 亚洲国产另类久久久精品小说 | 精品久久久久久国产潘金莲 | 亚洲精品成人网久久久久久| 久久伊人精品青青草原高清| 九九精品99久久久香蕉| 国内精品久久久久影院优| 久久精品国产亚洲AV无码麻豆| 日韩人妻无码精品久久久不卡| 久久综合给合久久国产免费 | 亚洲欧美成人久久综合中文网 | 久久久久中文字幕| 亚洲成色999久久网站|