题意简述
一个岛屿上有$a$只A类生物,$b$只B类生物,$c$只C类生物。其中A吃B,B吃C,C吃A。每个时刻,每一对动物相遇的概率都是等概率的。若干时刻后,岛屿上应该只剩下一种动物。对于A,B,C,求出剩下的最后一种动物是A,B,C的概率。$1<=a,b,c<=100$
思路
设状态
由于a,b,c<=100,容易得到$dp[i][j][k]$表示剩下$i$个A,$j$个B,$k$个C。很明显。
转移
首先,$dp[i][j][k]$珂以由$dp[i+1][j][k],dp[i][j+1][k],dp[i][j][k+1$转移过来。由于三种情况相似,就只讨论一种,写代码的时候基本就是复制然后改改了。
dp[i+1][j][k]转移到dp[i][j][k]
那就是死了一个A种生物。也就是上一秒一个A生物和一个C生物相遇了。总共的方案数是$(i+1)j+(i+1)k+jk$,一个A一个C有$(i+1)k$中情况,那么概率就是$\dfrac{(i+1)k}{(i+1)j+(i+1)k+jk}$。用这个式子乘以$dp[i+1][j][k]$即珂。
然后把三个情况加起来就是$dp[i][j][k]$的概率了。注意特判分母为零的情况,这个时候要令分数值为0。因为我们的转移中是要舍去这种情况的。
最后的答案:A存活的概率就是$dp[1,2….n][0][0]$,B存活的概率就是$dp[0][1,2…n][0]$,C存活的概率就是$dp[0][0][1,2…n]$
代码
1 |
|