Uva5211/POJ1873 The Fortified Forest 凸包
LINK
題意:給出點集,每個點有個價值v和長度l,問把其中幾個點取掉,用這幾個點的長度能把剩下的點圍住,要求剩下的點價值和最大,拿掉的點最少且剩余長度最長。
思路:1999WF中的水題。考慮到其點的數量最多只有15個,那麽可以使用暴力枚舉所有取點情況,二進制壓縮狀態,預處理出該狀態下的價值,同時記錄該狀態擁有的點,並按價值排序。按價值枚舉狀態,並對擁有的這些點求凸包,check是否合法,找到一組跳出即可。然而POJ似乎沒有SPJ,同樣的代碼POJ會超時,UVA60ms,可以在常數上優化,不預處理,實時判價值最大值,不使用結構體等
/** @Date : 2017-07-16 14:48:08 * @FileName: POJ 1873 凸包.cpp * @Platform: Windows * @Author : Lweleth ([email protected]
Uva5211/POJ1873 The Fortified Forest 凸包