這個問題源于POJ 2500。由于看錯了題目,我把題意理解成“給出一個圓,上面有數個點,任取4個點組成四邊形,使得此四邊形面積最大”。
標程給出的方法是O(N^2),是對于點之間距離固定的情況。
我也想出了一個O(N^2)的算法用于解決任意位置的點的情況。
將點按照順時針排序
假設四邊形的四個點A, B, C, D。按照順時針方向排序。
按順序枚舉A
按順序枚舉C
B取最接近弧AC中心的點,D同理
在紙上畫畫就可以看出,如果C是遞增的,則BD也是遞增的。
因此C掃了一圈,BD加起來最多也掃兩圈。
枚舉A是O(N),枚舉C是O(N),BD均攤下來也是O(N)
所以總復雜度是O(N^2)
雖然說復雜度跟標程一樣,但還是TLE了,哥很久沒寫C代碼了,現在比較挫。