$$ \def\bra#1{\mathinner{\left\langle{#1}\right|}} \def\ket#1{\mathinner{\left|{#1}\right\rangle}} \def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}} $$

◇◇ref038:AtCoder Beginner Contest 151 - F : Enclose All◇◇


☆問題URL

https://atcoder.jp/contests/abc151/tasks/abc151_f

☆問題の概要

平面上の$N$個の点が与えられるので、これらすべてを内部に含むような円の半径の最小値を求めよ。

☆解法

点集合の最小包含円は、かならず点のうちの2つもしくは3つに接している。よってこのような円の中心の候補は、ある3点の外心もしくはある2点の中点である。半径も定数時間でわかるので、すべての候補に対して全点を含んでいるかどうかを全部試すとO($N^4$)。

☆反省

コンテスト中に雑にググったところ、外心だけでなく中点も考慮しないといけないことがわからなかった。知識ゲーか?もっと速い方法もあるらしいが今回は必要なかった。

戻る