hdu4405 概率期望

来源:互联网 发布:caffe softmax layer 编辑:程序博客网 时间:2024/05/16 23:54

http://acm.hdu.edu.cn/showproblem.php?pid=4405

hdu4405写出期望递推公式即可:


t[ now ]表示从now到n 投掷次数期望

now: n - 1 -> 0;  j: 1 -> 6

t[ now ] += ( (t[ now + j ]) + 1 / 6.0)


如果有xi -> yi的捷径

t[ x ] = t[ y ] (x < y)即可

#include <iostream>#include <string>#include <algorithm>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>using namespace std;const int MAXN = 1e5 + 10;int trans[MAXN];double dp[MAXN], p[7];void solve(){int n, m, x, y;while(scanf("%d%d", &n, &m) == 2 && (n || m)){memset(trans, 0, sizeof(int) * (n + 1));memset(dp, 0, sizeof(dp));for(int i = 0; i < m; ++i){scanf("%d%d", &x, &y);trans[x] = y;}for(int i = n - 1; i >= 0; --i){if(trans[i])dp[i] += (dp[ trans[i] ] );elsefor(register int j = i + 1; j <= i + 6; ++j)dp[i] += ((1.0 + dp[j]) / 6.0);}printf("%.4lf\n", dp[0]);}}int main(){solve();return 0;}



0 0
原创粉丝点击