码迷,mamicode.com
首页 > 其他好文 > 详细

hdu4405 概率dp

时间:2017-09-10 10:18:07      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:code   i+1   style   amp   blog   return   include   while   cto   

飞行棋游戏 问从0结束游戏的投色子次数期望是多少

设dp[i]表示i到n的期望,那么可以得到dp[i]=(dp[i+1]+dp[i+2]+dp[i+3]+dp[i+4]+dp[i+5]+dp[i+6])/6+1,另外注意飞行航道和处理离终点6以内的特殊点。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>

using namespace std;

const int maxn=100010;
const double t=(double)1/(double)6;

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

double go(int i,int d)
{

    if (i+d>=n)
        return t;
    int pos=g[i+d];
    while (pos!=-1)
    {
        if (g[pos]==-1)
            break;
        else
        {
            pos=g[pos];
        }
    }
    if (pos==-1)
        pos=i+d;
    return t*(dp[pos]+1);
}

int main()
{
    int i,j,x,y;

    while (scanf("%d%d",&n,&m)==2)
    {
        if (n==0&&m==0)
            break;
        for (i=0;i<=n;i++)
        {
            g[i]=-1;
            dp[i]=0;
        }
        for (i=0;i<m;i++)
        {
            scanf("%d%d",&x,&y);
            g[x]=y;
        }
        for (i=n-1;i>=0;i--)
        {
            for (j=1;j<=6;j++)
            {
                dp[i]+=go(i,j);
            }
        }

        printf("%.4lf\n",dp[0]);
    }
}

 

hdu4405 概率dp

标签:code   i+1   style   amp   blog   return   include   while   cto   

原文地址:http://www.cnblogs.com/Aragaki/p/7499949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!