NYOJ 7 街区最短路径问题
街区最短路径问题
- 描述
- 一个街区有很多住户,街区的街道只能为东西、南北两种方向。
住户只可以沿着街道行走。 各个街道之间的间隔相等。 用(x,y)来表示住户坐在的街区。 例如(4,20),表示用户在东西方向第4个街道,南北方向第20个街道。 现在要建一个邮局,使得各个住户到邮局的距离之和最少。 求现在这个邮局应该建在那个地方使得所有住户距离之和最小; 
- 输入
- 第一行一个整数n<20,表示有n组测试数据,下面是n组数据;
 每组第一行一个整数m<20,表示本组有m个住户,下面的m行每行有两个整数0<x,y<100,表示某个用户所在街区的坐标。
 m行后是新一组的数据;
- 输出
- 每组数据输出到邮局最小的距离和,回车结束;
- 样例输入
- 
2 
 3
 1 1
 2 1
 1 2
 5
 2 9
 5 20
 11 9
 1 1
 1 20
- 样例输出
- 
2 
 44
- 来源
- 经典题目
- 上传者
- iphxer
- 
解题思路:代码很简单,不过题目值得思考!假设邮局坐标为<X,Y>,那么距离和为 for(i = 0; i < m; i++) sum += abs(xi-X)+abs(yi-Y); 
 为使sum最小,可以分别考虑X和Y的位置。考虑X,将xi按小到大进行排序,那么我们如何安放X呢,使abs(xi-X)的和最小呢?当然,放在中间了,使其在任意两间房子的连线上。那么假设有两个房子,那么abs(x1-X)+abs(x2-X) = x2-x1;因为x1 < x2;同样求得y的和;再根据曼哈顿距离公式,求得得距离和可以保证最小。#include <iostream> 
 #include <cstdio>
 #include <cstring>
 #include <cstdlib>
 #include <vector>
 #include <climits>
 #include <algorithm>
 #include <cmath>
 #define LL long long
 using namespace std;
 int main(){
 int kase,x[],y[],i,m,ans;
 scanf("%d",&kase);
 while(kase--){
 scanf("%d",&m);
 for(i = ; i < m; i++)
 scanf("%d %d",x+i,y+i);
 sort(x,x+m);
 sort(y,y+m);
 for(ans = i = ; i < m/; i++)
 ans += x[m-i-]-x[i] + y[m-i-]-y[i];
 printf("%d\n",ans);
 }
 return ;
 }
NYOJ 7 街区最短路径问题的更多相关文章
- nyoj 7 街区最短路径问题 【数学】
		找出横纵坐标的中位数,怎么找:先对x排序找x的中位数x0,再对y排序找y的中位数y0:最后统计各点到中位数点(x0, y0)的总距离: 街区最短路径问题 时间限制:3000 ms | 内存限制:6 ... 
- nyoj 7 街区最短路径问题 (曼哈顿距离(出租车几何) or 暴力)
		街区最短路径问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间 ... 
- nyoj 题目7 街区最短路径问题
		街区最短路径问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间 ... 
- NYOJ 7-街区最短路径问题(曼哈顿距离)
		街区最短路径问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间 ... 
- NYOJ7——街区最短路径问题
		街区最短路径问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述:一个街区有很多住户,街区的街道只能为东西.南北两种方向.住户只可以沿着街道行走.各个街道之间的间隔相等 ... 
- 【ACM】nyoj_7_街区最短路径问题_201308051737
		街区最短路径问题时间限制:3000 ms | 内存限制:65535 KB 难度:4描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间隔相等. ... 
- NYOJ街区最短路径问题
		描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间隔相等. 用(x,y)来表示住户坐在的街区. 例如(4,20),表示用户在东西方向第4个街道, ... 
- nyoj_7:街区最短路径问题
		做这题时,先假设目标点在某个位置,然后对其稍微移动dx,dy,分析对ans的影响.最终得,选点时,使一半的横坐标比目标点横坐标小,一半的纵坐标比目标点小,这样得到的ans最小. 题目链接: http: ... 
- NYoj-街区最短路径问题
		街区最短路径问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描写叙述 一个街区有非常多住户,街区的街道仅仅能为东西.南北两种方向. 住户仅仅能够沿着街道行走. 各个街道之 ... 
随机推荐
- 一步步实现自己的ORM(一)
			最近在研究ORM,尝试着自己开发了一个简单的ORM.我个人不喜欢EF因为跟不上EF升级太快了,再说公司里还停留在c# 3.5时代,对于NHibernate配置太复杂看到就头晕,就心生自己做一个ORM的 ... 
- 关于h5中背景音乐的自动播放
			音乐的自动播放属性,这里也介绍一下: <audio controls="controls" autoplay="autoplay"> <sou ... 
- Vue实例的4个常用选项
			1.过滤器 filters:在不改变的data的情况下输出前端页面需要的格式数据.例如将小数过滤为整数等.filters是一个对象,里边定义一个function方法,function传入一个参数,fu ... 
- CodeForces  219D  Choosing Capital for Treeland (树形DP)
			题意:给一个树形图,n个节点,n-1条有向边,要求选一个节点作为根,使需要改变方向的边的数目最少.并输出所有可能作为根的点. 思路: 先随便一个点进行DFS,计算将每棵子树的边全部往下时,所需要的费用 ... 
- POJ 1998 Cube Stacking
			Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes ... 
- 如何让浏览器关闭后session失效
			llzzcc66 知道合伙人数码行家 推荐于2018-08-10 如果用户不点击网站的“退出”链接,而直接关闭浏览器(或者强制关闭浏览器进程.死机等),服务器无法处理用户退出网站的请求,解决方式如 ... 
- 解决Genymotion2.8.1在拖动安装APK文件出现ARMtranslate错误
			转载文章:http://blog.csdn.net/solo_talk/article/details/68488129 在新版本的genymotion中,我们拖动安装APK文件的时候会出现一个问题, ... 
- Java截取视频文件缩略图
			/** * 截取视频第0帧的图片 */public static void videoImage(String filePath, String fileName,int widthdist, int ... 
- Instance Methods are Curried Functions in Swift
			An instance method in Swift is just a type method that takes the instance as an argument and returns ... 
- grep-sed命令用法:
			用户切换 su username:非登录式切换 su - username:登录式切换 su -l username:登录式切换 su username -c COMMAND echo -n ... 
