P1862

来源:互联网 发布:js继承 编辑:程序博客网 时间:2024/06/05 08:14

题目描述

某石油公司计划建造一条由东向西的主要输油管道。该管道要穿过一个有n口油井的油田。从每口油井都要有一条输油管道沿最短路径(或南或北)与主管道相连。如果给定n口油井的位置,及它们的x坐标(东西向)和y坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置?证明可规定时间内确定主管道的最优位置。
输入格式:
第一行是油井数n(1<=n<=10000)
接下来n行是油井的位置,每行2个整数x和y(-10000<=x,y<=10000)
输出格式:
只有一行是油井到主管道之间的输油管道最小长度总和


我的思路:先建一个坐标系,然后是上北下南左西右东。
主管东西走向,即与x轴平行,故油井到管道的距离与点的x值无关,存y值即可(即将点投影到y轴)
问题就简化为在y轴上找一点使之到所有点的距离最短。
如有-2 0 3 4,所求点可以是0,1,2,3,最短距离为6+3=9。ps:6=4- -2,3=3-0

#include<stdio.h>#include<algorithm>using namespace std;int main(){int t,a[10002],i,x;scanf("%d",&t);int dis=0;for(i=0;i<t;i++)scanf("%d%d",&x,&a[i]);//x是无用的sort(a,a+t);t--;for(i=0;i<t;)dis+=a[t--]-a[i++];printf("%d\n",dis);return 0;}


0 1
原创粉丝点击