メメメモモ

プログラミング、筋トレ、ゲーム、etc

036 - Max Manhattan Distance(★5)

atcoder.jp

2、3回解いているが、なかなか覚えられないのでメモ。 マンハッタン距離が出たら、ひとまず45度回転を考えるのは覚えていた。

45度回転の方法は (X, Y) = (x-y, x+y) を計算すること。 45度回転すると、距離の領域が正方形になり、処理がしやすくなる。

45度回転後のマンハッタン距離は max(|x1 - x2|, |y1 - y2|) になる。 なぜか? これは チェビシェフ距離 と言うらしい。 下記の記事で紹介されている式変形を眺めると、そうなることが分かってくる。

naoyat.hatenablog.jp

回転後の解法としては、

一番外側にある点の座標を利用する。 上下左右の一番外側なので(xmin, xmax, ymin, ymax)を求める。 クエリで指定される点と一番外側にある点が最大の距離となる。 そのため、答えは max(|x-xmin|, |x-xmax|, |y-ymin|, |y-ymax|) の値となる。

参考

kagglenote.com