#40042: 作者提供的解法


xavier13540 (柊 四千)

學校 : 國立臺灣大學
編號 : 21783
來源 : [36.230.29.43]
最後登入時間 :
2024-07-06 14:41:17
a480. 導彈攔截系統 -- 100學年度彰雲嘉區資訊學科能力競賽 | From: [1.171.44.145] | 發表日期 : 2024-04-24 12:42

設導彈攔截系統位於 $\color{black}{O_1(x_1, y_1)}$ 與 $\color{black}{O_2(x_2, y_2)}$,防護半徑分別為 $\color{black}{r_1}$ 與 $\color{black}{r_2}$,第 $\color{black}{i}$ 座城市位於 $\color{black}{P_i(\xi_i, \eta_i)}$。注意若 $\color{black}{\overline{O_1P_i}>r_1}$,則必須有 $\color{black}{r_2\ge\overline{O_2P_i}}$。若 $\color{black}{P_1, P_2, \ldots, P_n}$ 已根據 $\color{black}{\overline{O_1P_i}}$ 由小到大排序,我們的答案就是

\[\color{black}{\min\left\{\overline{O_1P_n}^2, \min_{1\le i\le n-1}\{\overline{O_1P_i}^2+\max_{i+1\le j\le n}\{\overline{O_2P_i}^2\}\}, \max_{1\le j\le n}\{\overline{O_2P_i}^2\}\right\}.}\]

因此可以用排序達到 $\color{black}{O(n\log n)}$ 的時間複雜度。

另外這題可以推廣到有三座導彈攔截系統的情況,時間複雜度一樣是 $\color{black}{O(n\log n)}$,有興趣的讀者可以想想看該怎麼做。

 
ZeroJudge Forum