牛客練習賽26 B.煙花(概率DP)
阿新 • • 發佈:2018-12-09
題目描述
小a有個煙花,每個煙花代表著互不相同的顏色,對於第個煙花,它有的概率點燃,現在小a要去點燃它們,他想知道產生顏色的期望個數 及 產生恰好產生種顏色的概率
輸入描述:
第一行兩個整數
接下來一行個數,第個數表示第個煙花被點燃的概率
輸出描述:
輸出有兩行
第一行表示產生不同顏色的期望個數
第二行表示產生恰好種顏色的概率
以換行符分割
示例1
輸入
3 2
0.5 0.25 0.75
輸出
1.5000
0.4062
說明
第二問樣例解釋:
相加得
備註:
對於的資料: 對於的資料: 輸出均保留4位小數,若你的答案誤差與std不超過即為正確
思路:概率DP。
我們先看下面這個表格,是n為3,k為2的情況。
i\dp\j | 0 | 1 | 2 |
---|---|---|---|
0 | 1 | 0 | 0 |
1 | 1−p11−p1 | p1p1 | 0 |
2 | (1−p1)∗(1−p2)(1−p1)∗(1−p2) | (1−p1)∗p2+p1∗(1−p2)(1−p1)∗p2+p1∗(1−p2) | p1∗p2p1∗p2 |
3 | (1−p1)∗(1−p2)∗(1−p3)(1−p1)∗(1−p2)∗(1−p3) | (1−p1)∗(1−p2)∗p3+(1−p1)∗p2∗(1−p3)+p1∗(1−p2)∗p3(1−p1)∗(1−p2)∗p3+(1−p1)∗p2∗(1−p3)+p1∗(1−p2)∗p3 | (1−p1)∗p2∗p3+p1∗(1−p2)∗p3+p1∗p2∗(1−p3)(1−p1)∗p2∗p3+p1∗(1−p2)∗p3+p1∗p2∗(1−p3) |
可以看出來對於前i個煙花,恰好有j個燃放的概率只與前i-1個煙花,恰好有j個或j-1個燃放的概率有關。
設DP[i][j]表示前i個煙花恰好爆炸了j個的概率,可得DP方程:
{DP[i][j]=DP[i−1][j]∗(1−pi)+DP[i−1][j−1]∗piDP[0][0]=1{DP[i][j]=DP[i−1][j]∗(1−pi)+DP[i−1][j−1]∗piDP[0][0]=1