輸油管道問題(快排)

題目描述:

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

輸入:首行爲油井數量n,其他行爲每口油井的橫座標xi,縱座標yi
輸出:油井到主管道之間的輸油管道最小長度總和。

思路:

與x座標沒有關係,只需對y座標求中位數,然後做差累加求和即可。

代碼如下

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int x;
    int a[n];
    for(int i=0;i<n;i++)
    {
        cin>>x>>a[i];
    }
    sort(a,a+n);
    int max=0;
    for(int i=0;i<n;i++)
    {
        int temp=abs(a[i]-a[n/2]);
        max+=temp;
    }
    cout<<max<<endl;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章