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

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

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            性做久久久久久久| 曰曰摸天天摸人人看久久久| 91久久香蕉国产熟女线看| 国内精品久久久久影院薰衣草| 久久人人爽人人爽人人片AV东京热 | 新狼窝色AV性久久久久久| 久久成人小视频| 久久精品国产亚洲AV蜜臀色欲 | 伊人久久综合成人网| 日产精品久久久久久久| 精品国产乱码久久久久软件| 国产69精品久久久久观看软件 | 久久精品国产亚洲AV大全| 97久久超碰国产精品旧版| 久久成人影院精品777| 国产精品gz久久久| 日本久久久久久久久久| 亚洲国产另类久久久精品| 国产精品久久久亚洲| 国产精品免费久久久久影院 | 99久久精品国产一区二区| 91性高湖久久久久| 性做久久久久久久久| 亚洲人成伊人成综合网久久久 | 色综合久久综精品| 久久丝袜精品中文字幕| 久久国产乱子伦免费精品| 9191精品国产免费久久| 精品国产乱码久久久久软件| 久久99精品久久久久婷婷| 久久国产三级无码一区二区| 亚洲va久久久噜噜噜久久狠狠| 国产精品久久久久久久久| 伊人色综合九久久天天蜜桃| 麻豆AV一区二区三区久久 | 亚洲中文字幕伊人久久无码| 国内精品伊人久久久久AV影院| 免费一级欧美大片久久网| 97久久香蕉国产线看观看| 久久毛片一区二区| 欧美一级久久久久久久大|