|
题目意思:
n个人排队尝试游戏,队首中有四种情况。
1、动作失败重新连,队列不变,概率为p1.
2、服务器链接失败重新连,第一个人排到队尾,概率为p2.
3、连接成功,第一个人出队,概率为p3.
4、服务器崩塌,终止,概率为p4.
求某人排在第m的位置,求服务器崩塌时他前面有少于k个人的概率。
解题思路:
之前做过类似的概率dp,有迭代,高斯消元解方程,不是顺序的,不过没写博客,所以就没做出来。。
因为人数有变化,所以人数要设一维,然后该人的位置也在变化,设为第二维。
dp[i][j]表示共有i个人,该人排在第j的位置时,发生所求事件的概率。
当j==1时,该人有1、2、4三种选择,dp[i][1]=p1*dp[i][1]+p2*dp[i][i]+p4
当2=
当j>k时,第一个人有1、2、3种选择使得事件发生,dp[i][j]=p1*dp[i][j]+p2*dp[i][j-1]+p3*dp[i-1][j-1],
化简得:
j==1 dp[i][j]=pp2*dp[i][i]+pp4
2=
j>k时,dp[i][j]=pp2*dp[i][j-1]+pp3*dp[i-1][j-1]
dp[1][1]可以直接求。
从dp[1]递推求出dp[i]
然后对于每一个dp[i] ,先把其他未知数带入dp[i][j]方程,迭代求出dp[i][j].
然后用依次递推求出dp[i][j].
代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
|