hdu 2955 Robberies(揹包變形)

2021-12-29 22:24:06 字數 650 閱讀 6216

這道題麻煩的是概率這東西沒法用個迴圈表示出來,根據我以往的經驗,指望著把給出的測試資料乘上一百或者一萬這種方法是完全不可取的。

乍一看,這道題目是拿概率當包,因為概率是浮點數,如果是想像普通揹包一樣處理,那是完全行不通的。

但是把題目轉換一下,題目給出的概率是被抓的概率,我們可以把所有銀行能搶的錢的總和當成乙個包,把概率轉換為安全概率,很容易理解這個包最後一定是能裝滿的,我們包裡面的財富是什麼?是概率!安全的概率!

從包的最大值往下查,找到第乙個包裡面裝的安全概率可以讓我們滿意,這就是我們想要的結果。

動態規劃的題目很有意思,有很多非常經典的問題,但是也正是因為經典問題太多了,圍繞著這些經典問題,就有了很多經典的資料。材料多的好處是學起來相對容易了很多,壞處是有時候題目掩蓋了思想的本質。而且dp問題也太花樣繁多了,有些簡直就是無厘頭了。

#include

#include

#define n 105

double w[n];

int v[n];

double dp[10005];

double max(double a,double b)

int main()

vt=1-vt;

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

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

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.限制條件之間關係為...