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

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

定义

曼哈顿距离:\(\operatorname{dis}_{\alpha}\Big((x_1,y_1),(x_2,y_2)\Big)=|x_1-x_2|+|y_1-y_2|\)。等价描述:四个方向走

切比雪夫距离:\(\operatorname{dis}_{\beta}\Big((x_1,y_1),(x_2,y_2)\Big)=\max(|x_1-x_2|,|y_1-y_2|)\)。等价描述:八个方向走

trick - 互相转化

  • 钦定 \((x,y)\to(x+y,x-y)\) 即可曼哈顿距离转切比雪夫距离。
  • 钦定 \((x,y)\to(\dfrac{x+y}2,\dfrac{x-y}2)\) 即可切比雪夫距离转曼哈顿距离。

其实也可以理解为图形旋转 \(45^{\circ}\) 再放缩 \(\sqrt2\) 倍之类的。

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

\[\begin{aligned}\operatorname{dis}_{\alpha}\Big((x_1,y_1),(x_2,y_2)\Big) &=\max(x_1-x_2,x_2-x_1)+\max(y_1-y_2,y_2-y_1)\\ &=\max(x_1-x_2+y_1-y_2,x_1-x_2+y_2-y_1,x_2-x_1+y_1-y_2,x_2-x_1+y_2-y_1)\end{aligned}\]

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

高维形式

上述过程也可以扩展到高维形式,具体地,对于 \(k\) 维点 \((a_1,a_2,\cdots,a_k)\) 映射到 \(2^{k-1}\) 维点 \((a_1,\pm a_2,\pm a_3,\cdots,\pm a_k)\) 完成曼哈顿距离转切比雪夫距离。证明和上面完全相同,类比一下就能理解了。

\(\text{ }\)

P3964 [TJOI2013] 松鼠聚会

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

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

\(\text{ }\)

P4648 [IOI 2007] pairs 动物对数

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

\(\text{ }\)

[ABC233Ex] Manhattan Christmas Tree

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

\(\text{ }\)

[ABC221G] Jumping sequence

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

posted @ 2024-05-16 18:03  liangbowen  阅读(50)  评论(0)    收藏  举报