输油管道问题 分治算法

某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。
如果给定n口油井的位置,即它们的x坐标(东西向)和y坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置?

如果有两口油井,取两口油井南北方向之间的任意位置
如果有三口油井,则取中位数。
n口油井即为找中位数



#include

#include
using namespace std;
int a[10000];
int main()
{
    int n,b,i,sum=0;
    cin>>n;
    for(i=0;i        cin>>b>>a[i];
    sort(a,a+n);
    b=a[n/2];
    for(i=0;i        sum+=b-a[i];
    for(i=n/2+1;i        sum+=a[i]-b;
    cout<     return 0;
}

你可能感兴趣的:(输油管道问题 分治算法)