青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

輸油管道問題 (POJ - 1723)

   先看算導上輸油管道問題的描述:


   這個題,雖然說給出了井的x,y坐標,但是要修建的主管道卻只是一條橫向的,而且其余管道也只是到這條管道的豎向距離。
那么,就轉換為確定一條直線 y = m,使得其它個點到這條直線的距離最多。也許不需要多的提示,大家的直覺就會想到應該
選所有y值的中點。但是,這個的證明卻不是那么的明顯。

證明如下:
   設所有的y值系列為y1,y2,...,yn,并且假設這個是按遞增排列的。我們要求的是Sum = Σ|yi-m|(1<=i<=n),
   
   1)顯然假如選小于y1或者大于yn的y=m都不會比選y1或者yn更好。
   2)如果選y1或者yn,那么|y1-m|+|yn-m| = |yn-y1|都是一樣的結果,甚至選y1和yn之間的任意一個值。
   3)如此繼續下去,對于y2和yn,也有2)所描述的性質
   4)繼續到最后,只需要取最中間一對點之間的值即可,如果n是奇數,那么就是中間的點,如果n是偶數,取任意一個中間
        點都可以
。

   通過上面證明,我們可以選取第y(n/2 + 1)作為修建主管道的地方。當然這可能是唯一的最優選擇,或者無數個最優選擇中的一個。
那么現在已經轉換為求中位數了,求中位數的辦法最簡單的是對序列排序然后取中間的即可。算法導論上有一種平均代價O(n)的辦法,
思路類似于快速排序,快排的每一次操作都是劃分數組,前小后大,如果我們也這一次次去劃分數組,剛好軸元素處于我們要求的那個位置
上那么就達到我們的目的了,下面的代碼中Select函數就是求一個數組的中位數。


   對于POJ 1723題,很顯然y的選擇是中位數即可,x的選擇需要轉換一下也變成求中位數了。題目中描述,最后要達到的效果是每個士
兵都占成一橫排,而且彼此相鄰,也就是y相同,但是x系列是k,k+1,k+2,...,k+n-1。那么如何從原來的x0,x1,x2,...,x(n-1)移動過去了。
可以簡單的考慮下,將最左邊的士兵移動到k,次左的移動到k+1,...,最右邊的移動到k+n-1,所需要的移動之和一定是最小的。那么我們
可以將原來的x0-x(n-1)排序,得到x'0,x'1,...,x'(n-1),要求的Sum = Σ|x'i - (k + i)| = Σ|(x'i - i) -  k|,那么要使Sum最小,只需要
求序列X'i - i的中位數即可了。

代碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using std::sort;
using std::swap;
#define MAX (10000 + 10)
int Partion(int* pnA, int nLen)
{
    int i, j;
    for (i = j = 0; i < nLen - 1; ++i)
    {
        if (pnA[i] < pnA[nLen - 1])
        {
            swap(pnA[i], pnA[j++]);
        }
    }
    swap(pnA[j], pnA[nLen - 1]);
    return j;
}
int Select(int* pnA, int nLen, int nIndex)
{
    if (nLen > 1)
    {
        int nP = Partion(pnA, nLen);
        if (nP + 1 == nIndex)
        {
            return pnA[nP];
        }
        else if (nP + 1 > nIndex)
        {
            return  Select(pnA, nP, nIndex);
        }
        else
        {
            return Select(pnA + nP + 1, nLen - nP - 1, nIndex - nP - 1);
        }
    }
    else
    {
        return pnA[0];
    }
}
int main()
{
    int nX[MAX];
    int nY[MAX];
    int nN;
    int i;
    while (scanf("%d", &nN) == 1)
    {
        for (i = 0; i < nN; ++i)
        {
            scanf("%d%d", &nX[i], &nY[i]);
        }
        int nMY = Select(nY, nN, nN / 2 + 1);
        sort(nX, nX + nN);
        for (i = 0; i < nN; ++i)
        {
            nX[i] = nX[i] - i;
        }
        int nMX = Select(nX, nN, nN / 2 + 1);
        int nSum = 0;
        for (i = 0; i < nN; ++i)
        {
            nSum += abs(nX[i] - nMX);
            nSum += abs(nY[i] - nMY);
        }
        printf("%d\n", nSum);
    }
    
    return 0;
}

posted on 2012-03-09 14:27 yx 閱讀(2332) 評論(0)  編輯 收藏 引用 所屬分類: 順序統計

<2012年3月>
26272829123
45678910
11121314151617
18192021222324
25262728293031
1234567

導航

統計

公告

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

me

好友

同學

網友

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            午夜久久黄色| 在线电影院国产精品| 欧美一级片久久久久久久| 亚洲狼人综合| 一区二区三区日韩在线观看| 亚洲久久视频| 亚洲一区二区少妇| 欧美一区二区三区四区夜夜大片| 午夜伦理片一区| 久久久高清一区二区三区| 久久香蕉精品| 欧美日韩综合另类| 国产精品无码永久免费888| 国产午夜亚洲精品羞羞网站| 国内精品久久久久影院薰衣草| 国产最新精品精品你懂的| 亚洲国产精品一区二区三区| 一区二区三区**美女毛片 | 欧美精品久久久久久| 欧美日韩国产一区精品一区 | 亚洲天堂av电影| 欧美一级久久久| 久久一二三区| 亚洲国产综合91精品麻豆| 亚洲第一伊人| 亚洲一区免费| 免费成人av在线| 国产精品久久久久久久第一福利| 影视先锋久久| 亚洲欧美日韩精品久久| 久久综合九色欧美综合狠狠| 亚洲日本va午夜在线电影| 欧美一区二区女人| 欧美日韩三级视频| 在线观看一区欧美| 欧美亚洲视频| 日韩一级精品| 美女脱光内衣内裤视频久久网站| 国产精品毛片大码女人| 亚洲三级免费电影| 久久久久久噜噜噜久久久精品| 亚洲免费不卡| 欧美国产高清| 亚洲国产专区校园欧美| 久久国产欧美精品| 在线亚洲精品福利网址导航| 美日韩精品免费观看视频| 国产视频丨精品|在线观看| 亚洲视频香蕉人妖| 亚洲电影有码| 欧美成人亚洲成人| 亚洲福利小视频| 久久久久久亚洲综合影院红桃| 亚洲婷婷综合久久一本伊一区| 欧美福利一区二区| 亚洲国产成人不卡| 另类图片综合电影| 久久精品官网| 樱桃视频在线观看一区| 久久久久久久久岛国免费| 亚洲一二三四久久| 欧美四级电影网站| 亚洲欧美日韩中文在线制服| 夜夜嗨av一区二区三区四季av| 欧美激情一二区| 日韩视频亚洲视频| 亚洲靠逼com| 国产精品久久久久aaaa樱花| 亚洲在线视频观看| 亚洲一级免费视频| 国产精品天天摸av网| 久久成年人视频| 欧美资源在线| 亚洲电影天堂av| 亚洲国产成人porn| 欧美另类变人与禽xxxxx| 一本久久综合亚洲鲁鲁| 一本色道久久精品| 国产日韩欧美制服另类| 久久综合亚州| 欧美大片在线观看一区| 亚洲午夜av| 国产精品欧美久久| 99精品国产在热久久婷婷| 蜜臀久久久99精品久久久久久| 久久国产欧美| 亚洲国产视频一区二区| 亚洲精选中文字幕| 国产精品网站视频| 美女爽到呻吟久久久久| 欧美激情在线免费观看| 亚洲愉拍自拍另类高清精品| 欧美在线地址| 日韩特黄影片| 欧美在线视频一区二区| 亚洲精品亚洲人成人网| 亚洲综合国产精品| 亚洲国产精品激情在线观看| 亚洲婷婷综合久久一本伊一区| 在线观看欧美精品| 一区二区电影免费在线观看| 一区一区视频| 中文精品视频一区二区在线观看| 国产一区二区三区日韩欧美| 91久久精品美女高潮| 国产伦精品一区二区| 亚洲国产精品99久久久久久久久| 国产精品久久久久77777| 欧美黄在线观看| 国产日韩欧美夫妻视频在线观看| 欧美电影专区| 国产视频一区在线| 一本色道**综合亚洲精品蜜桃冫| 尤妮丝一区二区裸体视频| 在线亚洲一区| 日韩午夜一区| 久久免费视频在线| 久久www免费人成看片高清| 欧美视频精品在线| 欧美高清视频在线播放| 狠狠久久婷婷| 欧美一级大片在线免费观看| 亚洲欧洲av一区二区| 欧美精品激情blacked18| 蘑菇福利视频一区播放| 国内外成人免费激情在线视频| 中文国产成人精品久久一| 亚洲一区二区三区四区在线观看 | 亚洲激情在线激情| 亚洲第一精品夜夜躁人人躁| 午夜宅男久久久| 欧美一激情一区二区三区| 欧美日韩一区在线| 日韩视频在线一区二区三区| 亚洲久久视频| 美玉足脚交一区二区三区图片| 久久久999精品| 国产综合久久久久久| 欧美一区二区三区四区在线观看| 亚洲自拍偷拍视频| 国产精品成人v| 一本综合精品| 性久久久久久| 国产视频久久久久| 久久精品在线观看| 亚洲在线中文字幕| 制服丝袜激情欧洲亚洲| 欧美精品高清视频| 99视频精品全国免费| 亚洲免费成人av电影| 欧美激情精品久久久久| 亚洲片国产一区一级在线观看| 99国产精品国产精品毛片| 欧美日韩亚洲激情| 亚洲欧美日韩高清| 麻豆成人在线观看| 亚洲人成网站精品片在线观看| 欧美国产日韩二区| 一区二区三区欧美在线| 欧美在线播放视频| 精品动漫3d一区二区三区免费| 久久综合久久88| 亚洲日本成人在线观看| 亚洲欧美中文字幕| 一色屋精品视频在线观看网站| 欧美搞黄网站| 中文高清一区| 欧美顶级少妇做爰| 亚洲欧美日韩中文视频| 伊人狠狠色j香婷婷综合| 欧美日韩国产综合久久| 午夜在线不卡| 亚洲国产精品一区二区第一页| 国产精品99久久久久久久vr | 亚洲精品自在久久| 国产精品国产亚洲精品看不卡15| 欧美中文字幕在线播放| 亚洲国产专区校园欧美| 久久成人免费电影| 亚洲精品在线观看免费| 国产精品资源| 欧美精品乱人伦久久久久久| 亚洲免费一区二区| 亚洲激情小视频| 久久天堂av综合合色| 亚洲一区bb| 亚洲精品影视| ●精品国产综合乱码久久久久| 国产精品免费小视频| 欧美黄免费看| 老妇喷水一区二区三区| 香蕉成人久久| 亚洲视频在线观看免费| 亚洲国产精品va在看黑人| 久久久久在线| 欧美在线高清视频| 亚洲欧美高清| 亚洲一区国产精品| 一本综合精品| 夜夜嗨av色一区二区不卡|