Vijos / 題庫 / 輸油管道問題

自為風月馬前卒發表於2017-03-20

背景

想念car的GF,car就出了道水題!

描述

某石油公司計劃建造一條由東向西的主輸油管道。該管道要穿過一個有n 口油井的油田。從每口油井都要有一條輸油管道沿最短路經(或南或北)與主管道相連。如果給定n口油井的位置,即它們的x 座標(東西向)和y 座標(南北向),應如何確定主管道的最優位置,即使各油井到主管道之間的輸油管道長度總和最小的位置?

程式設計任務: 
給定n 口油井的位置,程式設計計算各油井到主管道之間的輸油管道最小長度總和.

格式

輸入格式

輸入第1行是油井數n,1≤n≤10000。

接下來n行是油井的位置,每行2個整數x和y,-10000≤x,y≤10000。

輸出格式

輸出第1行中的數是油井到主管道之間的輸油管道最小長度總和。

樣例1

樣例輸入1

5
1 2
2 2
1 3 
3 -2
3 3

樣例輸出1

6

限制

各個測試點1s

提示

各個測試點1s

來源

經典演算法

 

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cmath>
 4 using namespace std;
 5 int a[10001];
 6 int b[10001];
 7 int tot;
 8 int main()
 9 {
10     int n;
11     cin>>n;
12     for(int i=1;i<=n;i++)
13     {
14         cin>>a[i]>>b[i];
15     }
16     sort(b+1,b+n+1);
17     int mid=b[n/2+1];
18     for(int i=1;i<=n;i++)
19     {
20         tot=tot+abs(b[i]-mid);
21     }
22     cout<<tot;
23     return 0;
24 }

 

相關文章