[JOI] B – Jumps(JOI Open Contest 2012)

スポンサーリンク

概要

問題文 →
公式解説 → 存在するか分からず

提出したら IE になってしまった.2024年8月12日現在,正しくジャッジされていないと思います.

→ 2024年8月21日修正されました.解答例

解法

すべての点が同一直線上だと解はありません.そうでないときに必ず作れます.


まず全点を通るパスを通るだけなら簡単で,例えばペア $(x,y)$ の辞書順でソートして順につなげばよいです.しかしこれでは終点と始点をつなげないので調整が必要です.

凸包上の点を $p$ 適当にとり,その他の点を偏角ソートします.その他の点を偏角ソート順につないだあと,最初と最後の点を $p$ とつなぐことでサイクルにします.

同じ偏角の点については, 偏角最小の点については $p$ に近い方から順に,偏角最大の点については $p$ から遠い方から順に並べることにすればよいです.

タイトルとURLをコピーしました