输油管道问题 分治算法

来源:互联网 发布:java时间戳转换为date 编辑:程序博客网 时间:2024/06/05 02:22

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

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



#include<iostream>

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