Vijos p1691 输油管道问题


描述
某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有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

代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 void bsort(int *, int);
 5 void swap(int *,int *);
 6 
 7 int main() {
 8     int n,i,tmp,a[10010],mid,sum;
 9     sum=0;
10     scanf ("%d",&n);
11     mid=n/2;
12     for (i=0;i<n;i++) {
13         scanf ("%d%d",&tmp,a+i);
14     }
15     bsort (a,n);
16     for (i=0;i<n;i++) {
17         sum += abs(a[i]-a[mid]);    
18     }
19     printf ("%d\n",sum);
20     system("pause");
21     return 0;
22 }
23 
24 void bsort(int *a, int len) {
25     int i,j;
26     for (i=0;i<len-1;i++) {
27         for (j=i+1;j<len;j++) {
28             if (a[i]>a[j]) {
29                 swap (&a[i],&a[j]);
30             }    
31         }    
32     }
33 }
34 
35 void swap(int *a, int *b) {
36     int tmp = *a;
37     *a = *b;
38     *b = tmp;    
39 }

 

转载于:https://www.cnblogs.com/yachen2018/p/8485872.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值