POJ 1322Chocolate 簡單概率dp

2021-10-11 14:43:11 字數 1171 閱讀 7514

有c種顏色的糖果,你每次可以取乙個糖果放在桌子上,但是一旦桌子上已經有這個顏色的糖果了,那這兩顆糖果都會沒掉,問讓你取n次糖果最後桌子上剩下m個糖果的概率是多少。

每種糖果要麼是奇數,要麼沒有

定義f [i

][j]

f[i][j]

f[i][j

]為ii

i次後剩下j

jj個糖果的概率

f [i

][j]

=f[i

−1][

j−1]

∗c−j

+1c+

f[i−

1][j

+1]∗

j+1c

f[i][j]=f[i-1][j-1]*\frac+f[i-1][j+1]*\frac

f[i][j

]=f[

i−1]

[j−1

]∗cc

−j+1

​+f[

i−1]

[j+1

]∗cj

+1​

但是這樣太慢了…那麼可以寫矩陣乘法…但是太懶了

n

nn可以縮小,因為當n

nn很大時概率趨於穩定

但是!

!!壓縮n

nn後需要保證奇偶性,因為轉移是與奇偶性有關的.

#include

#include

#include

#include

using

namespace std;

int n,m;

double c;

double f[

1009][

109]

;int

main()

f[0]

[0]=

1.0;

if( n>=

1000

) n=

1000

+(n%2)

;for

(int i=

1;i<=n;i++)}

printf

("%.3f\n"

,f[n]

[m])

;memset

( f,0,

sizeof f);}

}

POJ 1322 Chocolate 動態規劃

這題當m n 0的時候要輸出1.000 剛寫的時候預設從第二次開始取了.詳見 include include include include include using namespace std 題意 從乙個擁有無限多的盒子中拿出不同顏色的糖果,拿出任何一種顏色的概率都是1 c 每次拿出來的糖果都...

poj1322 Chocolate 生成函式

一共有 c 種糖果,取 n 次,每次取到糖果種類都是等概率的,求有 m 種糖果個數為奇數個的概率。直接概率dp時間複雜度太高,卡常數也不太好卡。將每次取出來的糖果看成是乙個帶有重複元素的排列,直接計算復合條件的排列數量。考慮符合條件的最後的序列的考慮egf 指數型生成函式 可得出現次數為偶數次的糖果...

13 2 2 從故障中恢復

13.2.2 從故障中恢復 世界銀行服務對每個使用者金鑰每一天請求數量有限制,也限制了請求的頻率。這意味著,如果我們一次執行大量的請求,有些可能會返回錯誤。解決方法是捕獲異常,稍後重試請求。清單 13.7 實現乙個迴圈,重複執行的請求,直到成功,或者嘗試 20 次。使用異常報告失敗,使用 f 的 t...