2011年2月7日 星期一

Codeforces #30 C Shooting Gallery

問題是﹕給了所有物體的出現座標,時間,和能夠打中的概率,問最大打中物件的期望值是多少,每次1時間單位能移動距離剛好為1。

直觀的DP,應用線性期望值應不難發現就是找一個物件的序列使得相鄰物件的時間間隔少於等於其實際距離,然後把它們的概率和最大化。

錯了幾次,發現寫比較函數犯了一個低級錯誤﹕

bool operator<(const obj &A, const obj & B)const{
if (A.time != B.time) return A.time < B.time;
}

最初以為除了時間的比較外還要做second key ordering,後來發現只需比較時間即可,故留著沒改。
但對於時間相同的obj會胡亂回傳1或0的,因此對quick sort partition會有錯誤。
把if條件移去即可。

沒有留言: