題意:roy要偷銀行,每個銀行都有乙個被抓到的概率,roy的媽媽算出乙個不被抓到的概率上限,要求求出roy偷到最多的錢且不超過被抓到的概率上限。
正難則反, 狀態轉移方程則為 dp[ v ] = max( dp[ v - w[ i ] ] * p[ i ] , dp[ v ] ) , dp[ v ] 表示偷到 v 元逃脫的概率, w[ i ] 表示從第 i 個銀行能偷到的錢, p[ i ] 表示偷第 i 個銀行逃脫的概率。
#include using namespace std;
const int size = 105;
int w[size];
float dp[10005], p[size];
int main()
memset(dp, 0, sizeof(dp));
dp[0] = 1;
for(i = 1; i <= n; i++)
for(v = sum; v >= w[i]; v--)
if(dp[v-w[i]]*p[i] > dp[v])
dp[v] = dp[v-w[i]]*p[i];
for(v = sum; v >= 0; v--)
if(dp[v] > 1 - f_limit)
}return 0;
}
hdu 2955 Robberies 01揹包變形
include include include include double f 10001 double maxn double maxs double a,double b int main for i m i 0 i if f i maxn 1e 12 break printf d n i r...
動態規劃 01揹包
最優二叉查詢樹.cpp 定義控制台應用程式的入口點。01揹包問題。include stdafx.h include include define n 3 the number of real node define m 10 using namespace std int tmain int arg...
01揹包動態規劃
0 1揹包 問題描述 乙個旅行者有乙個最多能用 m公斤的揹包,現在有 n件物品,它們的重量 分別是w1,w2 wn,它們的價值分別為 c1,c2,cn.若每種物品只有一 件求旅行者能獲得最大總價值。輸入格式 w 第一行 兩個整數,m 揹包容量,m 200 和n 物品數量,n 30 w第2.n 1 行...