?? 題目要求.txt
字號:
某石油公司計劃建造一條由東向西的主輸油管道。該管道要穿過一個有n口油井的油田。從每口油井都要有一條輸油管道沿最短路經(或南或北)與主管道相連。如果給定n口油井的位置,即它們的x坐標(東西向)和y坐標(南北向),應如何確定主管道的最優位置,即使各油井到主管道之間的輸油管道長度總和最小的位置?證明可在線性時間內確定主管道的最優位置
給定n口油井的位置,編程計算各油井到主管道之間的輸油管道最小長度總和。
由文件input.txt提供輸入數據。文件的第1行是油井數n,1≤n≤10000。接下來n行是油井的位置,每行2個整數x和y,-10000≤x,y≤10000。
程序運行結束時,將計算結果輸出到文件output.txt中。文件的第1行中的數是油井到主管道之間的輸油管道最小長度總和。
由題意易得本題x對結果毫無影響,不必考慮。假設鋪油管道y坐標為k,則結果為所 有|yi-k|的和,所以問題就在于求k。而中位數這點就是最小代價點。證明:假設中間點不為最小代價點,而為第k點,(1<=k<n/2+1)或者(n/2+1<k<=n),因為對稱性,證明前半段即可。k包含了非給定點。先令K為n/2+1的最臨近點。原前半段代價為s1,后半段代價為s2。當n為奇數時,k=n/2。那么前半段變為s1-(n/2)x,后半段變為s2+(n/2+1)x,總代價和變為s1+s2+x ,因為x>0,所以代價變大。當n為偶數時,k=n/2-1(因為n/2與n/2+1為等價中位數。)那么前半段變為s1-(n/2-1)x,后半段變為s2+(n/2)x,總代價和變為s1+s2+x ,因為x>0,所以代價變大。以此將往下遞推至k=1,代價不斷變大,這與k為最小代價點相矛盾。n/2+1<k<=n時同理可證。所以最小代價點為中位數。問題轉化為求中位數。算法采用平均情況下的線性時間選擇算法。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -