hdu 4405 Aeroplane chess (概率与期望)

来源:互联网 发布:做视频的软件 编辑:程序博客网 时间:2024/06/17 03:05

题目链接:hdu 4405

dp[i]表示在第i个格子,距离终点状态所需要的期望步数
方程转移:
dp[i]=dp[fa[i]] ->若当前位置可以飞行
dp[i]+=(dp[i+j]+1)/6  (1<=j<=6)

#include<cstdio>#include<cstring>#include<iostream>using namespace std;#define maxn (1000000+10)int N,M;int fa[maxn];double dp[maxn];inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;}int main(){while(scanf("%d%d",&N,&M)==2){if(N==0&&M==0)break;memset(fa,0,sizeof(fa));memset(dp,0,sizeof(dp));for(int i=1;i<=M;i++){int x=read(),y=read();fa[x]=y;}for(int i=N-1;i>=0;i--){if(fa[i]){dp[i]=dp[fa[i]];}else {for(int j=1;j<=6;j++)dp[i]+=(dp[i+j]+1.0)/6.0;}}printf("%.4lf\n",dp[0]);}return 0;}


0 0