nyoj 7 街区最短路径问题(不是图论)
来源:互联网 发布:oracle和mysql的优缺点 编辑:程序博客网 时间:2024/06/04 18:17
街区最短路径问题
时间限制:3000 ms | 内存限制:65535 KB
难度:4
- 描述
- 一个街区有很多住户,街区的街道只能为东西、南北两种方向。
住户只可以沿着街道行走。
各个街道之间的间隔相等。
用(x,y)来表示住户坐在的街区。
例如(4,20),表示用户在东西方向第4个街道,南北方向第20个街道。
现在要建一个邮局,使得各个住户到邮局的距离之和最少。
求现在这个邮局应该建在那个地方使得所有住户距离之和最小;- 输入
- 第一行一个整数n<20,表示有n组测试数据,下面是n组数据;
每组第一行一个整数m<20,表示本组有m个住户,下面的m行每行有两个整数0<x,y<100,表示某个用户所在街区的坐标。
m行后是新一组的数据; - 输出
- 每组数据输出到邮局最小的距离和,回车结束;
- 样例输入
231 12 11 252 9 5 2011 91 11 20
- 样例输出
244
街区最短路径问题,猛一看好像是一个搜索或者是最小生成树之类的,但是仔细考虑一下发现街区的范围并不清楚,因此如果用搜索的话边界是一个主要的问题,因此就有可能是思路出错了,就可以换种思路考虑一下,可以首先想一下如果是就一条东西方向的街道的话,那么最好的位置是在哪,相信这个并不难算出,在所有住户最中间的两个住户之间最好,这道题又给出了街道只有东西和南北方向,所以 最佳位置就是不仅在东西位置的最中间而且在南北位置的最中间的两家住户(注意:这里说的最中间不是地理位置的上的中间,而是住户数目中最中间的两个或一家),所以一次算出距离之和就行! 二维平面其实找x,y坐标的中位数(邮局坐标)
/*分析:由于只能上下左右通路,所以先把横竖坐标分开,分别求他们的最值1、从平面一维分析,假设坐标轴上有1、2、3……n个点,目标点在x。 2、先求点1和n到x的距离之和。很明显,x必须在1和n之间。 3、再求点2和n-1到x的距离之和。很明显,x必须在2和n-1之间…… 4、如此下去,最终x的范围不断缩小,最后的位置,就是中位数的位置了。*/#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;int main(){int a[100];int b[100];int n,t;scanf("%d",&n);while(n--){int sum=0;//memset(a,0,sizeof(a));//memset(b,0,sizeof(b));scanf("%d",&t);for(int i=0;i<t;i++){scanf("%d%d",&a[i],&b[i]);}sort(a,a+t);sort(b,b+t);for(int i=0;i<t/2;i++)sum+=(a[t-i-1]-a[i]+b[t-i-1]-b[i]);printf("%d\n",sum);}return 0;}
阅读全文
0 0
- nyoj 7 街区最短路径问题(不是图论)
- NYOJ-7:街区最短路径问题
- nyoj 7 街区最短路径问题
- NYOJ 7-街区最短路径问题
- NYOJ 7 街区最短路径问题
- nyoj-7-街区最短路径问题
- 街区最短路径问题(nyoj 7)
- NYOJ 7 街区最短路径问题
- Nyoj 7 街区最短路径问题
- NYOJ 7 街区最短路径问题
- NYOJ 7 街区最短路径问题
- nyoj 7 街区最短路径问题
- nyoj 7 街区最短路径问题
- NYOJ 7 街区最短路径问题
- NYOJ 7 街区最短路径问题
- nyoj 7 街区最短路径问题
- NYoj 7街区最短路径问题
- NYOJ 7 街区最短路径问题
- tableau中工具栏显示
- Android 超简单音乐播放器(六)播放暂停音乐,更换播放模式,上下歌曲切换(service)
- 记录一个菜鸟的起飞过程
- spring配置error1 hibernate的事务的配置
- 我的第一篇博客
- nyoj 7 街区最短路径问题(不是图论)
- 生产者消费者实例
- 继承
- jy-大佬作业(5)
- 求1+2+3+……+n的值。
- Qt学习笔记二
- 原型
- 01字典树+贪心(顺便总结字典树模板)
- my original studying notes for readn(),writen(),and readline() function