Uva 11201麻球繁衍(设概率方程的技巧)
发布日期:2021-06-30 10:30:35 浏览次数:2 分类:技术文章

本文共 877 字,大约阅读时间需要 2 分钟。

题意

k k k个球,每个球只存在一天就死去,但死前有 p i p_i pi的概率生 i i i个球( i ∈ [ 0 , n − 1 ] i\in[0,n-1] i[0,n1])

问在 m m m天以前死光的概率是多少( k , n , m < = 1000 k,n,m<=1000 k,n,m<=1000)


若知道一直麻球在 m m m天前死掉的概率是 x x x,那么答案就是 x k x^k xk

定义 f [ i ] f[i] f[i]表示一只麻球在 i i i天内死去的概率,考虑递推式

f [ i ] = p 0 + p 1 f [ i − 1 ] + p 2 f [ i − 1 ] 2 . . . p n − 1 f [ i − 1 ] n − 1 f[i]=p_0+p_1f[i-1]+p_2f[i-1]^2...p_{n-1}f[i-1]^{n-1} f[i]=p0+p1f[i1]+p2f[i1]2...pn1f[i1]n1

意思是,第一天如果麻雀死了,那就是死了,事件发生的概率是 p 0 p_0 p0

如果第一天麻雀没死,且产生了 1 1 1个后代,事件发生的概率是 p 1 p_1 p1

现在天数还有 i − 1 i-1 i1天,有 1 1 1只麻雀需要死去,所以概率是 p 1 ∗ f [ i − 1 ] p_1*f[i-1] p1f[i1]

以此类推

#include
using namespace std;const int maxn = 5e5+10;int t,n,k,m,casenum;double p[maxn],f[maxn];int main(){
cin >> t; while( t-- ) {
cin >> n >> k >> m; for(int i=0;i
> p[i]; for(int i=1;i<=m;i++) {
double sum = 1; f[i] = 0; for(int j=0;j

转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/114643914 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:1496 A. Split it!(wsfw)
下一篇:牛客练习赛57 D.回文串(PAM)

发表评论

最新留言

很好
[***.229.124.182]2024年04月15日 16时26分05秒