HDU-4089 Activation (概率DP求概率)
題目大意:一款新游戲注冊(cè)賬號(hào)時(shí),有n個(gè)用戶在排隊(duì)。每處理一個(gè)用戶的信息時(shí),可能會(huì)出現(xiàn)下面四種情況:
1.處理失敗,重新處理,處理信息仍然在隊(duì)頭,發(fā)生的概率為p1;
2.處理錯(cuò)誤,處理信息到隊(duì)尾重新排隊(duì),發(fā)生的概率為p2;
3.處理成功,隊(duì)頭信息處理成功,出隊(duì),發(fā)生的概率為p3;
4.服務(wù)器故障,隊(duì)伍中所有信息丟失,發(fā)生的概率為p4;
小明現(xiàn)在在隊(duì)伍中的第m個(gè)位置,問(wèn)當(dāng)他前面的信息條數(shù)不超過(guò)k-1時(shí)服務(wù)器故障的概率。
題目分析:這道題的狀態(tài)轉(zhuǎn)移方程不難寫(xiě)。定義狀態(tài)dp(i,j)表示在有 i 個(gè)人的隊(duì)伍中,他排在第 j 個(gè)位置時(shí)到達(dá)要求狀態(tài)的概率。則狀態(tài)轉(zhuǎn)移方程為:
dp(i,1)=p1*dp(i,1)+p2*dp(i,i)+p4
dp(i,j)=p1*dp(i,j)+p2*(i,j-1)+p3*dp(i-1,j-1)+p4 (2<=j<=k)
dp(i,j)=p1*dp(i,j)+p2*(i,j-1)+p3*dp(i-1,j-1) (k<j<=i)
整理一下,并另p21=p2/(1-p1),p31=p3/(1-p1),p41=p4/(1-p1),則得到:
dp(i,1)=p21*dp(i,i)+p41
dp(i,j)=p21*dp(i,j-1)+p31*dp(i-1,j-1)+p41 (2<=j<=k)
dp(i,j)=p21*dp(i,j-1)+p31*dp(i-1,j-1) (k<j<=i)
這樣就可以通過(guò)遞推求解。
為了書(shū)寫(xiě)方便,把上面的三個(gè)轉(zhuǎn)移方程用兩個(gè)方程表示出來(lái):
dp(i,1)=p21*dp(i,i)+c(1)
dp(i,j)=p21*dp(i,j-1)+c(j) ?(2<=j<=i)
dp(i,i)可以通過(guò)迭代得到:
(1-p21^i)dp(i,i)=∑(p21^(i-j))*c(j) (1<=j<=i)
?
ps:得加特判,否則會(huì)WA!!。。。
?
代碼如下:
# include<iostream> # include<cstdio> # include<cmath> # include<cstring> # include<algorithm> using namespace std;const double eps=1e-5;int n,m,k; double p1,p2,p3,p4; double dp[2005][2005];int main() {while(~scanf("%d%d%d",&n,&m,&k)){scanf("%lf%lf%lf%lf",&p1,&p2,&p3,&p4);if(p4<eps){printf("0.00000\n");continue;}double p21=p2/(1-p1);double p31=p3/(1-p1);double p41=p4/(1-p1);dp[1][1]=p41/(1-p21);for(int i=2;i<=n;++i){dp[i][i]=0;for(int j=1;j<=i;++j){if(j==1) dp[i][i]+=pow(p21,i-j)*p41;else if(j>=2&&j<=k) dp[i][i]+=pow(p21,i-j)*(p31*(dp[i-1][j-1])+p41);else dp[i][i]+=pow(p21,i-j)*p31*dp[i-1][j-1];}dp[i][i]/=(1-pow(p21,i));for(int j=1;j<i;++j){if(j==1) dp[i][j]=p21*dp[i][i]+p41;else if(j>=2&&j<=k) dp[i][j]=p21*dp[i][j-1]+p31*dp[i-1][j-1]+p41;else dp[i][j]=p21*dp[i][j-1]+p31*dp[i-1][j-1];}}printf("%.5lf\n",dp[n][m]);}return 0; }
轉(zhuǎn)載于:https://www.cnblogs.com/20143605--pcx/p/5324032.html
總結(jié)
以上是生活随笔為你收集整理的HDU-4089 Activation (概率DP求概率)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Laravel框架开发规范-修订版
- 下一篇: 计算机学院微信公众平台,智慧校园管理,一