【题目链接】
街区最短路径问题

【解决思路】

方法一、本来想用暴力破解法的。

就是从(0,0)点,到最后一个点,中间所有的点都计算一遍。但是想了一下,这个方法效率实在是太慢了。

但是碍于本人数学水平不高,还是上网找到的方法。

方法二、找中数法

先假设这些数据只有X坐标,没有Y坐标,也就是说这些点都在一个直线上,那么哪个位置才是离其他点的距离之和是最近的呢?

没错,就是中数。

所谓中数,就是把一些数据进行排序,然后取编号在最中间的数。

比如 : 1,5,8,10,2,6,11
排序后为: 1,2,5,6,8,10,11
中数就是中间的数 : 8

如果数据的个数是偶数个,那么中数就是取两个中数的平均值。

比如 : 1,5,8,10,2,6
排序后为: 1,2,5,6,8,10
中数 : 6, 8 这个时候最后的中数结果应该取 7

但是对于我们的题目来说,我们两者随便取一个就好,不会影响结果的(原因大家自己分析,画几个点,试一下就知道了)。

从而我们可以求出一些点的X坐标的中数x_mid;
同理可以求出一些点的Y坐标的中数y_mid ;

如果在直角坐标系上(二维平面),这个x_mid可以垂直于X轴,作一条直线。
同理,y_mid可以垂直于Y轴,作一条直线。

由于中数是 与其他点的距离之和最小的点。

那么两个直线的交点就是我们要求的邮局坐标了(x_mid, y_mid)!

【java 代码】

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;public class Main {static Main main = new Main();public static void main(String[] args) {Scanner reader = new Scanner(System.in);int n = reader.nextInt();for (int i = 0; i < n; i++) {int m = reader.nextInt();ArrayList<Integer> x_list = new ArrayList<Integer>();ArrayList<Integer> y_list = new ArrayList<Integer>();for (int j = 0; j < m; j++) {x_list.add(reader.nextInt());y_list.add(reader.nextInt());}Collections.sort(x_list);Collections.sort(y_list);int x_mid = x_list.get(x_list.size() / 2);int y_mid = y_list.get(y_list.size() / 2);int sum = 0;for (int x : x_list) {sum += Math.abs(x - x_mid);}for (int y : y_list) {sum += Math.abs(y - y_mid);}System.out.println(sum);}reader.close();}
}

NYOJ 街区最短路径问题相关推荐

  1. NYOJ——街区最短路径问题

    街区最短路径问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间隔相 ...

  2. NYOJ - 街区最短路径问题

    描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间隔相等. 用(x,y)来表示住户坐在的街区. 例如(4,20),表示用户在东西方向第4个街道, ...

  3. NYOJ 7 街区最短路径问题

    街区最短路径问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间隔相 ...

  4. nyoj 7 街区最短路径问题 暴力枚举

    街区最短路径问题 , 题目链接 , 点在这里. 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向.住户只可以沿着街道行走 ...

  5. nyoj 7 街区最短路径问题 (曼哈顿距离(出租车几何) or 暴力)

    街区最短路径问题 时间限制: 3000 ms  |  内存限制:65535 KB 难度: 4 描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间 ...

  6. nyoj 7街区最短路径问题(暴力 || 哈曼顿距离)

    街区最短路径问题 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 4 描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的 ...

  7. 【NYOJ】题目7街区最短路径

    街区最短路径问题 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 4 描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的 ...

  8. nyoj7街区最短路径问题

    题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=7 或者: http://115.159.40.116/problem_show.php? ...

  9. 题目7 街区最短路径问题

    为什么80%的码农都做不了架构师?>>>    街区最短路径问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述一个街区有很多住户,街区的街道只能为东西 ...

最新文章

  1. 消除类游戏ccf c语言,ccf试题 消除类游戏
  2. Java实现读取pdf文件内容(how to read pdf in java)
  3. homepage php,HomePage.php
  4. 2020年上半年短视频内容发展盘点报告
  5. boost学习之安装
  6. 解读 2018之Go语言篇(上):为什么Go语言越来越热?
  7. OnTouchListener和OnCliskListener
  8. Asp.Net学习-Cache高速缓存
  9. python:for循环修改list的值,应使用range
  10. onload事件_图像onLoad事件+ Internet ExplorerJavaScript问题
  11. Vuex_Todos
  12. java球的体积计算
  13. 基于cnn的人脸识别_人脸识别技术全面总结:从传统方法到深度学习
  14. 智能手环功能模块设计_智能手环毕业设计
  15. python中encode函数_python中文处理之encode/decode函数
  16. .NET Core 之 七 EF Core(五)
  17. linux安装i219网卡驱动下载,华硕E500 G5 (-INTEL I210 / I219-LM)网卡驱动12.17.10.7版下载,适用于Win10-64-驱动精灵...
  18. 7.PCIE配置空间读写软件
  19. 2021年如何低成本开启创业?
  20. 忘记计算机网络域名密码,自己家里wifi密码忘记了怎么办?

热门文章

  1. java最大公约数最小公倍数的逆问题
  2. miniUI时间格式化方法
  3. 信息安全:CISSP 密码学知识总结
  4. 全志芯片T113问题记录1--利用自带的TPADC实现触摸功能
  5. 专家教你选键盘--避免键位冲突
  6. 黑群晖DSM7.X的Synology Photos套件人脸识别补丁
  7. Simulink_simscape电源电路建模入门
  8. 中国区块链公司探访沙特,与当地政企展开深入交流
  9. 学习这篇总结后,你也能做出天天快报一样的推荐系统 1
  10. mobilenet系列之又一新成员---mobilenet-v3