遁術

まず,はじめに,N=1 での解法について議論する. ここで,簡単のために物見やぐらの位置を原点として考えたとき, 物見やぐらとの距離の条件は,座標 (x, y) と時刻 t を用いて (dx/dt)2 + (dy/dt)2 = (x2 + y2)2 と表せる.

ここで,z = x / (x2 + y2), u = y / (x2 + y2) と 座標変換すると, (dz/dt)2 + (du/dt)2 = 1 になる. この座標変換は一般的に平面幾何学の反転操作として知られているものである. したがって,物見やぐらの座標を (0, 0),敷地の左奥角の座標を (-50, 50),右手前角の座標を (50, 50) としたとき, 敷地を表す正方形の辺は,四つの円弧に変換される. その外側をユークリッド距離で最短経路で移動すればよい. 例えば,(50, -50) と (50, 50) を端点とする辺は,中心を (0.01, 0) とする半径 0.01 の円の右半分の円周に変換される.

N=2 については,二つの物見やぐらの座標の垂直二等分線で折り返して考えれば, 正方形の辺に一度以上接触する経路のうち最短となるものを考えればよい. したがって,座標変換後の円周で鏡面反射するような経路も考慮すれば求められる. N ≥ 3 についても同様に求めることができる. N に値が大きい場合については,中間の経路のほとんどで正方形の奥または手前の辺に沿った経路が最適になるので, 左端と右端それぞれで二つずつの正方形の内部の最適な経路を調べれば十分である.

以上より,全て種類のクエリについてそれぞれ O(1) で求められる.