ログインしてください。
ruins - 最古の遺跡2 (Ruins) 解説
by
shiomusubi496
O(N^3) 解法
凸包の辺は傾きが単調であることに着目します。
点対 \((i, j)\) \((1 \leq i, j \leq N, i \neq j)\) を線分 \(i-j\) の傾きの昇順に並び替えておくと、以下のような DP が動作します。
- 始点 \(s\) を固定する
- \(\mathrm{dp}[s]\) を \(0\) に、他を \(\infty\) に初期化する
- 点対 \((i, j)\) の傾きの昇順に次の遷移を行う
- \(\mathrm{dp}[j] \leftarrow \max(\mathrm{dp}[j], \mathrm{dp}[i] + 1)\)
ただし、 \(\mathrm{dp}[s]\) への遷移では代わりに答えを更新することにします。
これにより、元の点に戻ってくる傾き昇順のルートが全て尽くされ、この問題を \(\Theta(N^3)\) で解くことができました。
投稿日時:
最終更新: