首页 > 其他 > 详细

hdu 4405 概率dp

时间:2015-03-26 01:11:39      阅读:128      评论:0      收藏:0      [点我收藏+]

题意:飞行棋,有0~n-1个点,有些点可以直接通向其它点,每次通过掷筛子前进,求从起点到终点的期望

由于求的是期望,所以需要逆推

整体就是求出每个点状态的期望,然后递推到总的

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<queue>
 7 using namespace std;
 8 const int maxn=100005;
 9 int n,m,t;
10 int hash1[maxn];
11 double dp[maxn];
12 int main()
13 {
14     int i,j,k;
15     #ifndef ONLINE_JUDGE
16     freopen("1.in","r",stdin);
17     #endif
18     while(scanf("%d%d",&n,&m)!=EOF)
19     {
20         if(n==0&&m==0)  break;
21         int a,b;
22         memset(hash1,-1,sizeof(hash1));
23         for(i=0;i<m;i++)
24         {
25             scanf("%d%d",&a,&b);
26             hash1[a]=b;
27         }
28         memset(dp,0,sizeof(dp));
29         for(i=n-1;i>=0;i--)
30         {
31             if(hash1[i]!=-1) dp[i]=dp[hash1[i]];
32             else
33             {
34                 for(j=1;j<=6;j++)   dp[i]+=dp[i+j];
35                 dp[i]=dp[i]/6+1;
36             }
37         }
38         printf("%.4lf\n",dp[0]);
39     }
40 }

 

hdu 4405 概率dp

原文:http://www.cnblogs.com/cnblogs321114287/p/4367537.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!