2616: 供热管道优化
| Result | TIME Limit | MEMORY Limit | Run Times | AC Times | JUDGE |
|---|---|---|---|---|---|
| 3s | 65536K | 784 | 150 | Standard |
Changchun市的供暖公司总是为供热管道的修建位置感到头疼,一个不好的建设方案会浪费很多的时间和材料,他们总是想找到最优的建设方案。
为此,他们来到了JLU, 想通过聪明的你帮他们找出最优方案。
有n个住宅楼,平面坐标已知,现在要修建一个从南到北垂直的主管道,其他住宅楼以分支管道连到主管道,(每个住宅楼都是直接连到主管道的),问主管道如何选址,可以使得分支管道的总长度最短。
Input
每个case第一行有一个整数n(n<1500). 下面n行,每行有两个整数,分别代表第n个住宅楼的横坐标和纵坐标
n=0时代表输入结束
Output
每个case一行,输出最短的分支管道总长度(不包括主管道)
Sample Input
2 1 1 5 1 0
Sample Output
4
This problem is used for contest: 143 192
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<math.h>
using namespace std;
int x[2000];
int main()
{
int n;
while(scanf("%d",&n),n)
{
int y;
for(int i=1;i<=n;i++)
{
cin>>x[i];
cin>>y;
}
sort(x+1,x+n+1);
int s=(1+n)/2;
int sum=0;
for(int i=1;i<=n;i++)
{
sum+=fabs(x[s]-x[i]);
}
cout<<sum<<endl;
}
return 0;
}
本文介绍了一种解决供热管道布局优化问题的算法。该问题旨在寻找一条垂直主管道的最佳位置,以连接多个已知坐标的住宅楼,目标是最小化所有分支管道的总长度。通过排序和中位数选择的方法,文章提供了具体的实现步骤。
217

被折叠的 条评论
为什么被折叠?



