HDU4405 Aeroplane chess 飞行棋 期望dp 简单

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

 
题意:问从起点到终点需要步数的期望,1/6的概率走1、2、3、4、5、6步。有的点a有路可以直接到b,满足a<b。
期望dp,水题,总感觉以前做过类似的,可能因为期望dp基础题都是这个德行。
代码
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cmath>
 6 #include<queue>
 7 using namespace std;
 8 const int maxn=100010;
 9 const double eps=1e-8;
10 const int modn=998244353;
11 int n,m;
12 int a[maxn]={};
13 double f[maxn]={};
14 int main(){
15     int x,y;
16     while(~scanf("%d%d",&n,&m)){
17         if(n==0&&m==0){
18             break;
19         }
20         memset(a,0,sizeof(a));
21         memset(f,0,sizeof(f));
22         for(int i=1;i<=m;i++){
23             scanf("%d%d",&x,&y);
24             a[x]=y;
25         }
26         for(int i=n-1;i>=0;i--){
27             if(a[i]){
28                 f[i]=f[a[i]];
29             }
30             else{
31                 f[i]=(f[i+1]+f[i+2]+f[i+3]+f[i+4]+f[i+5]+f[i+6])/6+1;
32             }
33         }
34         printf("%.4f\n",f[0]);
35     }
36     return 0;
37 }
View Code

 

posted @ 2017-11-05 08:54  鲸头鹳  阅读(172)  评论(0编辑  收藏  举报