BZOJ2318 Spoj4060 game with probability Problem

这题嘛。。。不会

Orz 这个解答 P33开始 2333

 1 /**************************************************************
 2     Problem: 2318
 3     User: rausen
 4     Language: C++
 5     Result: Accepted
 6     Time:0 ms
 7     Memory:808 kb
 8 ****************************************************************/
 9  
10 #include <cstdio>
11 #include <cmath>
12 #include <algorithm>
13  
14 using namespace std;
15 typedef double lf;
16 const int N = 105;
17 int T, n;
18 lf p, q, k;
19 lf p1, p2, p3, p4;
20 lf p5, p6, p7, p8;
21 lf f[N], s[N];
22  
23 int main(){
24     scanf("%d", &T);
25     int i;
26     while (T--){
27         scanf("%d%lf%lf", &n, &p, &q);
28         f[0] = 0, s[0] = 1;
29         n = min(100, n);
30         k = 1 - (1 - p) * (1 - q);
31         p1 = p / k, p2 = (1 - p) * q / k;
32         p3 = (1 - q) * p / k, p4 = q / k;
33         k = 1 - p * q;
34         p5 = (1 - p) / k, p6 = (1 - q) * p / k;
35         p7 = q * (1 - p) / k, p8 = (1 - q) / k;
36         for (i = 1; i <= n; ++i)
37             if (f[i - 1] < s[i - 1]){
38                 f[i] = p1 * s[i - 1] + p2 * f[i - 1];
39                 s[i] = p3 * s[i - 1] + p4 * f[i - 1];
40             } else{
41                 f[i] = p5 * s[i - 1] + p6 * f[i - 1];
42                 s[i] = p7 * s[i - 1] + p8 * f[i - 1];
43             }
44         printf("%.6lf
", f[n]);
45     }
46     return 0;
47 }
View Code
By Xs酱~ 转载请说明 博客地址:http://www.cnblogs.com/rausen
原文地址:https://www.cnblogs.com/rausen/p/4083473.html