題目大意:小偷去銀行偷錢,每個銀行給出能被偷的錢數和小偷在此銀行會被抓的概率。
算出小偷不會被抓時能偷到的錢。給出小偷會被抓的概率r,在銀行被抓的總概率不能超過此概率。
題解:以能偷到的錢為揹包容量,以不會被抓的概率為物品價值,需要注意揹包恰好裝滿,
而且概率是用乘法,給出的測試資料有點坑。標準01揹包。輸出物品價值超過不會被抓概率(1-r)時的揹包容量.注意偷不到錢時被抓概率為0.
#include
#include
#include
using namespace std;
double dp[
10005];
int main()
dp[0]
=1; double p;
int n,sum=0;
scanf
("%lf%d"
,&p,
&n);
p=1-p;
int a[n]
; double b[n]
;for
(int i=
0;i)for
(int i=
0;ifor(int i=sum;i>=
0;i--)}
}}
杭電 2546 飯卡 01揹包
解題思路 先忽略飯卡餘額大於等於5塊才能買飯這一細節,需要求的是飯卡裡面剩餘的錢最少,轉化一下,變成花的錢最多,那麼剩下的錢就最少,再考慮餘額大於等於5塊才能買飯這一細節,可以這樣想,如果卡里的餘額不足5塊,那麼買不到飯,直接輸出現在卡里的金額,如果卡里的錢多於5塊,我們就可以先將這5塊錢留起來,這...
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揹包
描述 乙個旅行者有乙個最多能裝 m 公斤的揹包,現在有 n 件物品,它們的重量分別是w1,w2,wn,它們的價值分別為c1,c2,cn,求旅行者能獲得最大總價值。輸入第一行 兩個整數,m 揹包容量,m 200 和n 物品數量,n 30 第2 n 1行 每行二個整數wi,ci,表示每個物品的重量和價值...