曼哈顿距离与切比雪夫距离
曼哈顿距离与切比雪夫距离
距离 - OI Wiki (oi-wiki.org)已经说的比较清晰,提取要点和结论便于复习使用。
曼哈顿距离:
切比雪夫距离:
曼哈顿距离与切比雪夫距离的相互转化
结论:
- 曼哈顿坐标系是通过切比雪夫坐标系旋转
后,再缩小到原来的一半得到的。 - 将一个点 (𝑥,𝑦) 的坐标变为 (𝑥+𝑦,𝑥−𝑦) 后,原坐标系中的曼哈顿距离等于新坐标系中的切比雪夫距离
- 将一个点 (𝑥,𝑦) 的坐标变为
后,原坐标系中的切比雪夫距离等于新坐标系中的曼哈顿距离
用处
-
切比雪夫距离在计算的时候需要取max,往往不是很好优化,对于一个点,计算其他点到该的距离的复杂度为O(n)
-
而曼哈顿距离只有求和以及取绝对值两种运算,我们把坐标排序后可以去掉绝对值的影响,进而用前缀和优化,可以把复杂度降为O(1)
-
注意到切比雪夫转曼哈顿中除法如果向下取整可能会使答案不正确,所以考虑先不除以2,最后求完答案再除以2也是一样的。
[曼哈顿距离与切比雪夫距离的互相转化 && 点对距离之和初步 - louis_11 - 博客园 (cnblogs.com)](https://www.cnblogs.com/qqq1112/p/15121123.html#:~:text=曼哈顿距离: %24Manhattandis (i%2C%24 %24j)%24 %24%3D%24 %24|x_i%24 %24-%24 %24x_j|%24,%24y1)
例题
1.https://leetcode.cn/problems/minimize-manhattan-distances/description/
题意:在二维平面上,给你若干个点。请你恰好移除一个点,返回移除后剩余任意两点之间的 最大曼哈顿 距离可能的 最小 值。
Solution:直接存入的转化为的切比雪夫距离,然后枚举删除的点,使用multiset维护x和y的所有取值,最大值就是当前剩余点中的max(最大x-最小x,最大y-最小y)
曼哈顿转切比雪夫https://www.luogu.com.cn/problem/P5098
题意:给定若干二维平面的点,求其中两点的最大曼哈顿距离
Sol1:考虑存入变换后的坐标,然后直接最值相减取max即可
Sol2:假如没学过这个套路,应该如何思考?
- 注:然后会发现以上两种思路的代码实现是一样的。
P3964 [TJOI2013] 松鼠聚会https://www.luogu.com.cn/problem/P3964
题意:有N个二位平面上的点,定义每一个点到其八连通的点的距离为1。选一个点,使得剩下所有点到该点的距离之和最小,求出这个距离之和。
Sol:本题是切比雪夫转曼哈顿来处理。注意到题目中给出的距离是切比雪夫距离的定义,要求距离之和我们考虑转化为曼哈顿以后利用排序和前缀和来处理。坐标转换的时候涉及除法,我们最后直接对答案除,不在中间计算过程除,防止精度损失。
具体实现:题意即为求切比雪夫距离之和最小,暴力的做法是 的。考虑将切比雪夫距离转化为曼哈顿距离,我们将横纵坐标分开排序求前缀和,这样既可快速求出,以一个点为中心,其他点到这个点的曼哈顿距离之和。
-
具体的做法是将两个坐标分开讨论,每次找到当前点在排序后数组的位置p。
-
那么它前面的点坐标都小于当前点,累加的答案为
。 -
后面的点的坐标都大于当前点,反过来累加答案,为
对所有的点都枚举一遍,取最小值即可,复杂度
针对上题的总结:
https://atcoder.jp/contests/abc351/tasks/abc351_e ABC351E
前置知识:坐标轴旋转后点的变换公式2.3.
逆变换公式建2.4
问题陈述
在坐标平面上有
两点
一只兔子最初位于点
。
位置为的兔子可以跳跃到 、 、 或 。
被定义为从 点跳到 点所需的最少跳跃次数。
如果经过任意次数的跳跃都无法从点到达点 ,则设为 。
计算总和
Sol:考虑这样的移动方式难以计算,我们使用旋转变换
将平面相对于原点旋转
设
-
接下来,我们来看看
的定义是如何变化的。
在最初的定义中,兔子可以从 跳转到 、 、 和 ;
因此,经过变换后,它可以从 跳到 、 、 和 。 -
替换
和 后,可以从 跳转到 、 、 和 。
从 到达 所需的最少跳转次数就是 的定义(如果无法到达,则为 )。
下面,我们考虑变换后的问题。
也就是说,我们设
显然,这样得到的答案与原答案相同。
我们进一步将
注意到所有
不失一般性,我们考虑计算变换后的x都是偶数的情况,对于这样的点我们直接先对x排序,利用前缀和计算答案,这个计算方式在前面题目已经涉及。再给出一种方式,看贡献次数。假设下标从0开始,排序后后的元素
将同样的讨论应用于
对两组的坐标
思路总结:坐标旋转转化为常规曼哈顿,注意到移动距离变成2倍,造成的影响有最后答案要除2以及横纵坐标之间必须mod2相同才可达。值得注意的是在这样变换下,一个点的横坐标和纵坐标一定是mod2同余的。
k维空间有n个点,求 k维曼哈顿距离最大值。首先从某ioi题目中得知:当k维曼哈顿转换成切比雪夫,变化的复杂度较高且不是线性。我们只能另寻他法。
https://vjudge.net/problem/POJ-2926
题意:给定若干五维点,求其中的两点之间的最大曼哈顿距离值
Sol:我们仔细对于二维的情况刨析,也就是前面的题目说没有套路的时候的思考方式,发现我们可以枚举正负号。比较关键的一点是减数与被减数在我们钦定符号后一定可以同构。
k维曼哈顿距离的应用https://vjudge.net/problem/HDU-6435#author=GPT_zh
题意:n个主武器,m个副武器,每个武器有一个得分,和k个属性。现在你要最大化下面这个式子。
也就是需要得分相加大,属性相差绝对值大,且两者和加起来大。注意满足的优先级。
未完待续...
https://www.luogu.com/article/hxr7p6po
https://www.luogu.com.cn/problem/P4648
曼哈顿距离最小生成树 - GGBeng - 博客园 (cnblogs.com)
论一类平面点对曼哈顿距离问题 - 百度文库 (baidu.com)
浅谈信息学竞赛中的“0”和“1” - 道客巴巴 (doc88.com)
__EOF__

本文链接:https://www.cnblogs.com/mathiter/p/18199399.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!