http://acm.hdu.edu.cn/showproblem.php?pid=4405
题意:问从起点到终点需要步数的期望,1/6的概率走1、2、3、4、5、6步。有的点a有路可以直接到b,满足a<b。
期望dp,水题,总感觉以前做过类似的,可能因为期望dp基础题都是这个德行。
代码
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
const int maxn=;
const double eps=1e-;
const int modn=;
int n,m;
int a[maxn]={};
double f[maxn]={};
int main(){
int x,y;
while(~scanf("%d%d",&n,&m)){
if(n==&&m==){
break;
}
memset(a,,sizeof(a));
memset(f,,sizeof(f));
for(int i=;i<=m;i++){
scanf("%d%d",&x,&y);
a[x]=y;
}
for(int i=n-;i>=;i--){
if(a[i]){
f[i]=f[a[i]];
}
else{
f[i]=(f[i+]+f[i+]+f[i+]+f[i+]+f[i+]+f[i+])/+;
}
}
printf("%.4f\n",f[]);
}
return ;
}