期望DP UVA11021 Tribles
Posted 行码棋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了期望DP UVA11021 Tribles相关的知识,希望对你有一定的参考价值。
原题链接
思路:
每种生物都是独立的,问所有生物在m天死亡的概率就是所有每种生物死亡的概率相乘即可。
- 状态表示
f [ i ] f[i] f[i]表示一个生物在i
天内死亡完的概率 - 状态转移
f [ i ] = ∑ j = 0 n − 1 p [ j ] ∗ f [ i − 1 ] j f[i] = \\sum_{j=0}^{n-1}p[j]*f[i-1]^j f[i]=∑j=0n−1p[j]∗f[i−1]j
解释:
p [ j ] ∗ f [ i − 1 ] j p[j]*f[i-1]^j p[j]∗f[i−1]j表示生了j
个生物,然后他们在i-1
天后死完的概率
p [ j ] p[j] p[j]为生下j
只生物的概率, f [ i − 1 ] j f[i-1]^j f[i−1]j为j
只生物每只都死绝的概率,每只死绝概率的乘积
代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e3+5;
int n,k,m;
double p[N],f[N];
int main()
{
int t;
cin>>t;
for(int kase=1;kase<=t;kase++)
{
memset(f,0,sizeof f);
cin>>n>>k>>m;
for(int i=0;i<n;i++) cin>>p[i];
f[1] = p[0];
for(int i=2;i<=n;i++)
for(int j=0;j<n;j++)
f[i] += p[j]*pow(f[i-1],j);
printf("Case #%d: %.7lf\\n",kase,pow(f[m],k));
}
return 0;
}
以上是关于期望DP UVA11021 Tribles的主要内容,如果未能解决你的问题,请参考以下文章