您的位置:首页 > 运维架构

hdu4405 Aeroplane chess(期望dp)

2015-05-27 01:25 323 查看
题意:已知起点(0)和可选步数(1,2…6),每次选择一种走法。且存在一些点之间连通,可以直达。

求第一次大于等于n的期望步数。

解法:简单的期望dp

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<set>
#include<vector>
#include<map>
#define ll long long
using namespace std;

const int maxn = 100000+10;

int n,m;
int vis[maxn];
double dp[maxn];

int main(){
while(scanf("%d%d",&n,&m)!=EOF){
if(n==0&&m==0) break;
memset(dp,0,sizeof(dp));
memset(vis,0,sizeof(vis));
for(int i=1;i<=m;i++){
int x,y; scanf("%d%d",&x,&y);
vis[x]=y;
}
for(int i=n-1;i>=0;i--){
if(vis[i]){
dp[i]=dp[vis[i]];
}
else{
double tmp=0.0;
for(int k=1;k<=6;k++){
tmp+=dp[i+k];
}
dp[i]=tmp/6.0+1.0;
}
}
printf("%.4lf\n",dp[0]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: