首页 > 代码库 > BZOJ2318 Spoj4060 game with probability Problem

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\n", f[n]);45     }46     return 0;47 }
View Code

 

BZOJ2318 Spoj4060 game with probability Problem