题干:

三维空间上有N个点, 求一个点使它到这N个点的曼哈顿距离之和最小,输出这个最小的距离之和。

点(x1,y1,z1)到(x2,y2,z2)的曼哈顿距离就是|x1-x2| + |y1-y2| + |z1-z2|。即3维坐标差的绝对值之和。

收起

输入

第1行:点的数量N。(2 <= N <= 10000)
第2 - N + 1行:每行3个整数,中间用空格分隔,表示点的位置。(-10^9 <= X[i], Y[i], Z[i] <= 10^9)

输出

输出最小曼哈顿距离之和。

输入样例

4
1 1 1
-1 -1 -1
2 2 2
-2 -2 -2

输出样例

18

解题报告:

用中位数的性质将三个坐标拆开来求。注意这题不能直接取n/2了,,,虽然一般情况下都是成立的,但是如果n=1那就GG了。所以保险起见以后用的时候还是奇数偶数分开讨论好了。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
const int MAX = 2e5 + 5;
struct Node {ll x,y,z;
} p[MAX];
bool cmp1(Node a,Node b) {return a.x < b.x;
}
bool cmp2(Node a,Node b) {return a.y < b.y;
}
bool cmp3(Node a,Node b) {return a.z < b.z;
}
int main()
{int n;ll sum = 0;cin>>n;for(int i =1; i<=n; i++) {scanf("%lld%lld%lld",&p[i].x,&p[i].y,&p[i].z);}sort(p+1,p+n+1,cmp1);int fk = n%2 == 1 ? n/2+1 : n/2; for(int i = 1; i<=n; i++) {sum += abs(p[i].x - p[fk].x);}sort(p+1,p+n+1,cmp2);for(int i = 1; i<=n; i++) {sum += abs(p[i].y - p[fk].y);}sort(p+1,p+n+1,cmp3);for(int i = 1; i<=n; i++) {sum += abs(p[i].z - p[fk].z);}cout << sum;return 0 ;}

【51nod - 1108】距离之和最小 V2(曼哈顿距离,中位数性质)相关推荐

  1. 51nod 1096 距离之和最小 思维题,求中位数

    题目: 在一条直线上,与两个点距离之和最小的点,是怎样的点? 很容易想到,所求的点在这两个已知点的中间,因为两点之间距离最短. 在一条直线上,与三个点距离之和最小的点,是怎样的点? 由两个点的规律,我 ...

  2. 关于货仓选址问题的方法及证明(在数轴上找一点使得该点到所有其他点的距离之和最小)...

    在数轴上找一点使得该点到所有其他点的距离之和最小 方法:找到大小为中位数的点,该点就是要求的点(如有两个取之间任意一点都行) 证明: 先看看当只有2个点时的情况: 分类讨论: 如果在A的左边(如 $P ...

  3. Matlab粒子群算法搜索费马点-求到多个点距离之和最小的点

    0. 前言 本文是在我之前一篇博客的基础上进行了扩展和延申,原文使用了matlab自带的优化函数,而本文采用了一个比较经典的随机优化算法--粒子群算法,对给定的目标函数进行求解. Matlab实现搜索 ...

  4. 三维马氏距离_各种距离(欧氏距离、曼哈顿距离、切比雪夫距离、马氏距离等)...

    引用:http://blog.csdn.net/shiwei408/article/details/7602324 在做分类时常常需要估算不同样本之间的相似性度量(SimilarityMeasurem ...

  5. 圆拟合算法(距离之和最小)

    上一篇博客介绍了最小二乘法拟合圆的方法.这种方法对误差符合正态分布的数据点很有效.但是在机器视觉应用中经常会碰到一些干扰点.这些干扰点多数时候是偏向某一个方向的.这时要是用最小二乘法拟合,拟合出的圆会 ...

  6. 利用最小二乘法,用直线拟合点时,为什么计算竖直距离而非垂直距离?为什么在线性回归分析中,求的是距离平方和最小,而不是距离之和最小?

    我的理解是,直接求距离之和可能导致多个解存在的情况,而求距离平方和可以保证唯一解,参考: 当且仅当a=b时,不等式等号成立 参考文章:利用最小二乘法,用直线拟合5点时,为什么计算竖直距离而非垂直距离?

  7. 三角形一点到三边距离最小_三角形内有没有一个点到三边距离之和最小 -

    不论是不是内心, 一个点到三边的距离都是垂线段的长度, 相互之间不能直接比较. 正确的结论是这样的: ①若三角形不等腰, 则平面上到三边距离和最小的点是最大内角的顶点. ②若三角形等腰, 而底边大于腰 ...

  8. 三角形一点到三边距离最小_三角形内有没有一个点到三边距离之和最小

    不论是不是内心 , 一个点到三边的距离都是垂线段的长度 , 相互之间不能直接比较 . 正确的结论是这样的 : ①若三角形不等腰 , 则平面上到三边距离和最小的点是最大内角的顶点 . ②若三角形等腰 , ...

  9. 欧式距离与曼哈顿距离的区别以及曼哈顿距离的应用

    欧氏距离就是我们最常用的两点之间的直线距离. 以二维空间为例,两点(x1,y1),(x2,y2)之间的欧式距离为: 曼哈顿距离则表示两个点在标准坐标系上的绝对轴距之和. 还是以二维空间为例,两点(x1 ...

最新文章

  1. Java项目:基于遗传算法学校排课系统(java+Springboot+Maven+mybatis+Vue+Mysql)
  2. STM32-USART控制led和蜂鸣器
  3. 递归求解并生成哈夫曼编码的代码实现
  4. 令人笑喷的56个代码注释,你写过多少?
  5. 在dbca建库的时候报ORA-27125错误的解决方法
  6. 用户操作-用户添加操作代码实现
  7. SAP CRM Fiori Opportunity应用功能一览
  8. ubuntu 18.04.1 使用心得
  9. Bash:把粘贴板上的内容拷贝的文件中。
  10. atitit.故障排除--- 当前命令发生了严重错误。应放弃任何可能产生的结果sql server 2008
  11. 如何轻松破解windows密码(运行即可,免重启)
  12. 移动硬盘插入提示需要格式化RAW_分区变成RAW格式怎么办?
  13. 学生信息管理系统python
  14. 媒企农三方共建专属基地 探索助力吉林乡村振兴
  15. 2020年茶艺师(初级)考试及茶艺师(初级)实操考试视频
  16. 24点纸牌游戏,c语言实现
  17. T58 Office开发模式
  18. @media 屏幕适配常用尺寸
  19. 主管发话:一周搞不定用友U8 ERP跨业务数据分析,明天就可以“毕业”了
  20. python需要掌握的词汇量_北大保安,词汇量15000、会Python编程,网友:当保安都不够格!...

热门文章

  1. [Leetcode][第410题][JAVA][分割数组的最大值][动态规划][二分]
  2. AtCoder-2379 - 连接竹竿 思维 | 数学
  3. win10切第二屏幕_Win10特有的31个快捷键,装逼利器,赶快收藏吧!学习电脑知识...
  4. python执行效率有多低_python – Scapy的低性能
  5. Java NIO 教程
  6. 收件箱java项目源码,Java物资管理系统项目源码(含数据库).zip
  7. cmake install_在vscode中使用cmake-format(windows端)
  8. linux重启memcache_Linux下的Memcache安装方法
  9. 新浪云python示例_Python Web框架Flask中使用新浪SAE云存储实例
  10. debian 升级linux内核,Debian8升级内核到4.5