語法書 / AA 競程語法書 下冊 / 第十六單元 / 優化,是在優化什麼?

16.1 優化,是在優化什麼?

先把 10.1 的結論搬回來:程式會不會 TLE,由「運算次數隨資料量 n 成長的形狀」決定——認出 O、代入最大的 n、除以 10^9 跟時限比。

所以優化的目標是換形狀,不是修零頭。一個 O(n^2) 的做法在 n = 10^5 要跑 10^{10} 次,就算你把迴圈裡的運算精簡一半,也還有 5 \times 10^9 次——照樣 TLE。真正的出路是把形狀往下換一階:

n = 10^{12} 時 運算次數 感受
O(n) 10^{12} 約一千秒,死當
O(\sqrt{n}) 10^6 眨眼
O(\log n) 約 40 快到測不出來
O(1) 1 一步

登入後即可閱讀完整內容

語法書免費開放給所有 AACPOJ 帳號,註冊只要一分鐘。