HDU2955 01 揹包變形

2021-06-19 05:37:09 字數 586 閱讀 7218

dp[ i ][ j ]:表示從前 i 家銀行中搶劫某些家,得到 j 價值 而不被抓住的概率。

dp[ j ]=max( dp[ j ],dp[ j - val[ i ] ]*( 1-w[ i ] ) ) );

將全部銀行的錢當做揹包的最大體積

那麼每家銀行的錢則當做物品的體積

那麼被抓的概率當做物品的價值

那麼便容易推出我們所需要的動態方程:

dp[i]=max(dp[i],(dp[i-money]*(1-rp)));  // money 當前銀行錢,rp 當前被抓概率

#include

#include

using namespace std;

double dp[10050];

int money[10050],sum,n;

double rp[10050];

int main()

dp[0]=1;

for(i=0;i

}for(i=sum;i>=0;i--)}}

// system("pause");

return 0;

}

hdu 2955 0 1揹包變形

題目大意 劫匪搶銀行,要求被抓概率小於p。共有n個銀行,第i個銀行錢數為m i 被抓概率為p i float型 求劫匪最多能搶多少錢 思路 由於代價 被抓概率 是浮點型且不能直接相加,所以不能以代價為揹包。這個題目可以以獲得的價值 即搶到的錢數 為揹包,求搶到一定錢時逃跑的概率 雖然搶到的錢數不是連...

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...