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

ouc 1087

时间:2014-11-16 11:52:46      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   ar   os   sp   for   数据   div   

1087: 飞行棋

时间限制: 1 Sec  内存限制: 64 MB
提交: 7  解决: 3
[提交][状态][讨论版]

题目描述

飞行棋是在一个长度为n的棋盘上走动棋子的游戏。游戏开始时有一个棋子在棋盘的开始,位置是1。
然后每一步玩家掷一次骰子,并将棋子往前跳骰子正面大小个格子。
当棋子跳出飞行棋的棋盘时游戏结束。问游戏结束时玩游戏的人掷骰子次数的期望。

输入

第一行输入一个数T代表测试用例组数(T<=200),接下来T组测试用例,每组测试数据为棋盘大小

输出

对于每个棋盘,输出玩家要掷骰子次数的期望(结果保留到小数点后4位)。每行输出一个结果。

样例输入

2
1
2

样例输出

1.0000
1.1667

提示

 

来源

第三届“朗讯杯”高级组

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<queue>
#include<vector>
#include<set>
#include<bitset>
using namespace std;
double dp[1010];
int main()
{
    int t,n;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        dp[1]=1;
        dp[2]=1.0/6*dp[1]+1;
        dp[3]=1.0/6*(dp[1]+dp[2])+1;
        dp[4]=1.0/6*(dp[1]+dp[2]+dp[3])+1;
        dp[5]=1.0/6*(dp[1]+dp[2]+dp[3]+dp[4])+1;
        dp[6]=1.0/6*(dp[1]+dp[2]+dp[3]+dp[4]+dp[5])+1;
        for(int i=7;i<=n;i++)
            dp[i]=1.0/6*(dp[i-6]+dp[i-5]+dp[i-4]+dp[i-3]+dp[i-2]+dp[i-1])+1;
        printf("%.4lf",dp[n]);
    }
    return 0;
}

  

ouc 1087

标签:blog   http   io   ar   os   sp   for   数据   div   

原文地址:http://www.cnblogs.com/a972290869/p/4101130.html

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