hdu 2955 0 1揹包變形

2021-08-27 12:06:21 字數 453 閱讀 8340

題目大意:劫匪搶銀行,要求被抓概率小於p。共有n個銀行,第i個銀行錢數為m[i],被抓概率為p[i](float型);求劫匪最多能搶多少錢;

思路:由於代價(被抓概率)是浮點型且不能直接相加,所以不能以代價為揹包。這個題目可以以獲得的價值(即搶到的錢數)為揹包,求搶到一定錢時逃跑的概率;雖然搶到的錢數不是連續變化的,但是通過初始化時的巧妙處理還是可以連續遍歷的,具體見**及注釋;

#include#include#define ans(a,b) ((a)>(b)?(a):(b))

#define n 111

int m[n];

float p[n],f[11111];

int main()

}for(j=0;j<=sum;j++)

printf("%d\n",ans);

}return 0;

}

HDU2955 01 揹包變形

dp i j 表示從前 i 家銀行中搶劫某些家,得到 j 價值 而不被抓住的概率。dp j max dp j dp j val i 1 w i 將全部銀行的錢當做揹包的最大體積 那麼每家銀行的錢則當做物品的體積 那麼被抓的概率當做物品的價值 那麼便容易推出我們所需要的動態方程 dp i max dp...

hduoj 2955 01揹包變形,動態規劃

這道題關於概率的部分我理解了。另一點就是轉化成01揹包的問題。我是這麼想的。01揹包dp時是求在一定容量下的最大價值。這道題dp時是求獲得一定金錢時的最大逃跑概率。感覺和01揹包還是有一點差別。雖然 寫起來很像。先記錄在這裡。希望有一天能夠徹底的理解這個問題。附上 include include i...

HDU 3466 01揹包變形

給出物品數量n和總錢數m 對於n個物品。每乙個物品有其花費p i 特殊值q i 價值v i q i 表示當手中剩餘的錢數大於q i 時,才幹夠買這個物品 首先對n個物品進行 q p的排序,表示差額最小的為最優。優先考慮放入這個物品 然後01揹包計算 include stdio.h include s...