曼哈顿距离和切比雪夫距离的互相转换

入门文章


A ( x 1 , y 1 ) , B ( x 2 , y 2 ) 假设A(x_1, y_1), B(x_2,y_2)
d i s 1 ( A , B ) = x 1 x 2 + y 1 y 2 曼哈顿距离dis1(A,B)=|x_1-x_2| +|y_1-y_2|
d i s 2 ( A , B ) = m a x ( x 1 x 2 , y 1 y 2 ) 切比雪夫距离dis2(A,B)=max(|x_1-x_2|,|y_1-y_2|)


> 曼哈顿距离 -->切比雪夫距离

d i s 1 ( A , B ) = x 1 x 2 + y 1 y 2 dis1(A,B)=|x_1-x_2| +|y_1-y_2|
可以转换为四种情况
x 1 x 2 + y 1 y 2 x_1-x_2+y_1-y_2 ———— 1
x 1 x 2 + y 2 y 1 x_1-x_2+y_2-y_1 ———— 2
x 2 x 1 + y 1 y 2 x_2-x_1+y_1-y_2 ———— 3
x 2 x 1 + y 2 y 1 x_2-x_1+y_2-y_1 ———— 4
四种情况最大的那个
1,4一组得
( x 1 + y 1 ) ( x 2 + y 2 ) |(x_1+y_1)-(x_2+y_2)|
2,3一组得
( x 1 y 1 ) ( x 2 y 2 ) |(x_1-y_1)-(x_2-y_2)|
最终可转化为
m a x ( ( x 1 + y 1 ) ( x 2 + y 2 ) , ( x 1 y 1 ) ( x 2 y 2 ) ) max(|(x_1+y_1)-(x_2+y_2)|, |(x_1-y_1)-(x_2-y_2)|)
这就是切比雪夫距离

原来点的坐标是 ( x , y ) (x, y)

新点的坐标就是 ( x + y , x y ) (x+y,x-y)


> 切比雪夫距离 -->曼哈顿距离

同上逆推就可以了

原来点的坐标是 ( x , y ) (x, y)

新点的坐标就是 ( x + y 2 , x y 2 ) (\frac{x+y}{2},\frac{x-y}{2})

就是把坐标系旋转45度,然后缩小一半


做题:
P5098 [USACO2004OPEN]Cave Cows 3 洞穴里的牛之三
曼哈顿距离转换为切比雪夫距离
P3964 [TJOI2013]松鼠聚会
切比雪夫距离转换为曼哈顿距离,然后横纵坐标分别贡献
AT3557 Four Coloring
曼哈顿距离转换为切比雪夫距离后,xjb构造

猜你喜欢

转载自blog.csdn.net/qq_38944163/article/details/93733953