UVa 11021 (概率 递推) Tribles

Tribble是麻球?

因为事件都是互相独立的,所以只考虑一只麻球。

设f(i)表示一只麻球i天后它以及后代全部死亡的概率,根据全概率公式:

f(i) = P0 + P1 * f(i-1) + P2 * f(i-1)2 + ... + Pn * f(n)n

每个麻球死亡是独立的,所以Pj * f(i-1)j 表示生了j个麻球,这j个麻球要在i-1天内全部死亡。

 1 #include <cstdio>

 2 #include <cmath>

 3 using namespace std;

 4 

 5 const int maxn = 1000 + 10;

 6 double f[maxn], p[maxn];

 7 

 8 int main()

 9 {

10     //freopen("in.txt", "r", stdin);

11 

12     int T;

13     scanf("%d", &T);

14     for(int kase = 1; kase <= T; kase++)

15     {

16         int n, k, m;

17         scanf("%d%d%d", &n, &k, &m);

18         for(int i = 0; i < n; i++) scanf("%lf", &p[i]);

19         f[0] = 0;

20         f[1] = p[0];

21         for(int i = 1; i <= m; i++)

22         {

23             f[i] = 0;

24             for(int j = 0; j < n; j++) f[i] += p[j] * pow(f[i-1], j);

25         }

26         printf("Case #%d: %.7f\n", kase, pow(f[m], k));

27     }

28 

29     return 0;

30 }
代码君

 

你可能感兴趣的:(uva)