hdu 2955 Robberies 01揹包變形

2021-06-16 16:47:53 字數 385 閱讀 4588

#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);

}return 0;

}

題目中輸入的是被抓住的概率,如果揹包抓住的概率有點煩,就揹包逃跑的概率;抓住的概率是ai,那麼逃跑概率就是∏(1-ai)

初始化f[0]=1,其他為0;因為一開始只有沒有盜取錢財的情況下逃跑的概率是1

HDU 2955 Roberies 揹包問題

疑問點 如何轉化成0 1揹包問題,有點不好理解,先打個大大的問號?上限概率轉化為最小的安全概率即p 1 p 被活捉的概率為pj,安全概率即為pj 1 pj 定義的容量為m sumv,對應的錢數為m1,m2,m3.求最大的安全概率,且要求安全概率大於p include include include ...

HDU 2955 Robberies 小數揹包

參考資料 題意 乙個人要去搶銀行,給定n個銀行各自的總存款和此人在這個銀行被抓的概率,求被抓概率小於p的情況下搶錢數的最大值。這裡可以轉化為0 1揹包問題。要點 1.概率給的是被抓概率,需要轉化為不被抓的概率。用1 p i 2.揹包容量不能是概率 小數 揹包容量應該為錢數總和。3.限制條件之間關係為...

hdu 2955 Robberies(揹包變形)

這道題麻煩的是概率這東西沒法用個迴圈表示出來,根據我以往的經驗,指望著把給出的測試資料乘上一百或者一萬這種方法是完全不可取的。乍一看,這道題目是拿概率當包,因為概率是浮點數,如果是想像普通揹包一樣處理,那是完全行不通的。但是把題目轉換一下,題目給出的概率是被抓的概率,我們可以把所有銀行能搶的錢的總和...