AOJ 1283 : Most Distant Point from the Sea

問題↓

Most Distant Point from the Sea | Aizu Online Judge

問題概要

  • 凸多角形が反時計回りで与えられます。
  • 凸多角形の内部にある点のうち
    辺からの距離が最も遠い点との距離を出力してください。

解法

  • 辺からの距離をDとしてそこから多角形の内部に距離Dだけ並行移動した直線で凸多角形を切る。
  • 全ての辺に対してその動作を行った時、凸多角形が残っていれば
    どの辺からも距離Dだけ離れた点が存在することが分かる。
  • 直線で凸多角形を切る動作はconvex_cutを使ってO(N)でで切る。
ソースコード

感想

convex_cutを初めて有用活用した。

ぶっちゃけ解法全くわからんかった、初見でこんなのありかよとか思ったが教育的に良い問題だ。

線分の平行移動とか短いけどライブラリ化すると楽そうだ。