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