曼哈顿距离&切比雪夫距离

好菜菜哦,lbw 这都不会吗?

定义

曼哈顿距离:disα((x1,y1),(x2,y2))=|x1x2|+|y1y2|。等价描述:四个方向走

切比雪夫距离:disβ((x1,y1),(x2,y2))=max(|x1x2|,|y1y2|)。等价描述:八个方向走

trick - 互相转化

  • 钦定 (x,y)(x+y,xy) 即可曼哈顿距离转切比雪夫距离。
  • 钦定 (x,y)(x+y2,xy2) 即可切比雪夫距离转曼哈顿距离。

其实也可以理解为图形旋转 45 再放缩 2 倍之类的。

简单代数证明一下第一条。考虑经典 |x|=max(x,x),我们得到

disα((x1,y1),(x2,y2))=max(x1x2,x2x1)+max(y1y2,y2y1)=max(x1x2+y1y2,x1x2+y2y1,x2x1+y1y2,x2x1+y2y1)

发现 x+y,xy 恰好能完美换元,再应用 max(x,x)=|x| 得证。

高维形式

上述过程也可以扩展到高维形式,具体地,对于 k 维点 (a1,a2,,ak) 映射到 2k1 维点 (a1,±a2,±a3,,±ak) 完成曼哈顿距离转切比雪夫距离。证明和上面完全相同,类比一下就能理解了。

 

P3964 [TJOI2013] 松鼠聚会

其实就是切比雪夫距离。转曼哈顿距离后二分+前缀和随便做。

几乎一样的题:P8075 [COCI 2009/2010 #7] KRALJEVI

 

P4648 [IOI 2007] pairs 动物对数

B=1 直接指针。B=2 转切比雪夫后二维数点,排序+树状数组 解决。B=3 转切比雪夫后四位数点,排序+三维树状数组解决。

 

[ABC233Ex] Manhattan Christmas Tree

弱智题,转切比雪夫距离后二分答案转二维数点,瞎写点东西都能过的。

 

[ABC221G] Jumping sequence

虽然说不是曼哈顿距离,但是挺像的哦哦。套用 (x,y)(x+y,xy) 的形式发现可以将两维分开讨论,分别做 01 背包即可,需要 bitset 优化。具体可以参照我的题解。

posted @   liangbowen  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示