标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2060 Accepted Submission(s): 1346
求期望,逆推。
开始用的递归,结果疯狂爆栈。。。最后改了递推式
#include <cstdio> #include <iostream> #include <sstream> #include <cmath> #include <cstring> #include <cstdlib> #include <string> #include <vector> #include <map> #include <set> #include <queue> #include <stack> #include <algorithm> using namespace std; #define ll long long #define _cle(m, a) memset(m, (a), sizeof(m)) #define repu(i, a, b) for(int i = a; i < b; i++) #define MAXN 100050 #define eps 1e-5 bool vis[MAXN]; int flight[MAXN]; int m, n; double d[MAXN]; int main() { while(~scanf("%d%d", &n, &m) && (n + m)) { _cle(flight, -1); _cle(d, 0.0); int x, y; for(int i = 0; i < m; i++) { scanf("%d%d", &x, &y); flight[x] = y; } int dt; for(int i = n - 1; i >= 0; i--) for(int j = 1; j <= 6; j++) { dt = i + j; while(flight[dt] > 0) dt = flight[dt]; d[i] += (d[dt] + 1.0) / 6.0; } printf("%.4lf\n", d[0]); } return 0; }
标签:
原文地址:http://www.cnblogs.com/sunus/p/4415797.html