曼哈顿距离&切比雪夫距离
好菜菜哦,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)\),我们得到
发现 \(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 优化。具体可以参照我的题解。