题目链接:https://vjudge.net/problem/25907/origin

一个山洞,里面有有1到n个位置,每个位置都有一定的金币,你有一个六面的骰子,一开始你在1,每次摇到了哪个数就往前走几步

如果超过了n就重新摇,知道n为止,问你到n需要摇的次数的期望。

一开始我用正推,一直错,在这里我们需要逆推,我们先不想正推,等下再说。

我们假设Ei表示i点开始可以获得的金子的期望,如果i点到n的距离>=6,那么Ei=(E(i+1)/6+E(i+2)/6+E(i+3)/6+...+E(i+6)/6).

如果距离<6,Ei=(E(i+1)/6+E(i+2)/6+E(i+3)/6+...+En/6).注意:逆推时每个E的概率都是一样的。

#include<stdio.h>
int n,m,k,t;
double dp[];
int min(int a,int b)
{
if(a<b)
return a;
return b;
}
int main()
{
scanf("%d",&t);
int count=;
while(t--)
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%lf",&dp[i]);
for(int i=n-;i>=;i--)
{
int num=min(n,i+);
double sum=;
for(int j=i+;j<=num;j++)
{
sum+=dp[j];
}
dp[i]=sum/(num-i)+dp[i];
}
printf("Case %d: %.7f\n",++count,dp[]);
}
return ;
}

为什么不能正推,现在给出我学长的解释,感觉很有道理:

为什么只有从后往前才会符合推理
因为从前往后的概率分布是不均匀的。
从a[i-6]到a[i]的概率并不是1/6,因为a[i-6]可以先到a[i-5],再到a[i],

所以实际上,a[i-6]到a[i]的 概率是低于其他值的,因为其他值到a[i]的概率是要先算上a[i-6]没有成功抵达a[i]的概率。

 不能以1开始,因为状态方程只能为
a[i]=1/6*a[i+1]+ 1/6*a[i+2]+……+1/6*a[i+6]
假如我们令方程为
a[i]=1/6*a[i-1]+ 1/6*a[i-2]+……+1/6*a[i-6]
a[2]=a[1]+a[2]
a[3]=0.5a[1]+0.5a[2]+a[3]=a[1]+0.5a[2]+a[3]
那么
a[4]=1/3a[1]+1/3a[2]+1/3a[3]+a[4]=a[1]+0.5a[2]+1/3a[3]+a[4]
然而实际上a[4]的期望并不是这样
如果1到4。
从1开始,到2的概率为1/3,到3的概率为1/3加上2到3的概率,为0.5。
所以正确的是a[4]=a[1]+1/3a[2]+0.5a[3]+a[4]。

LightOJ - 1030 期望+dp的更多相关文章

  1. lightoj 1030 概率dp

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1030 #include<cstdio> #include<cstri ...

  2. lightOJ 1030(期望)

    题意:有一个迷宫是1×n的格子,一个人每到一个格子就能够把这个格子内的金子所有拿走,刚開始站在第1个格子,然后開始掷骰子得到点数x,他就要从当前位置走到加x的位置.假设发现位置是大于n的就又一次掷骰子 ...

  3. LightOJ 1030 Discovering Gold (概率/期望DP)

    题目链接:LightOJ - 1030 Description You are in a cave, a long cave! The cave can be represented by a \(1 ...

  4. LightOj:1030-Discovering Gold(期望dp模板)

    传送门:http://www.lightoj.com/volume_showproblem.php?problem=1030 Discovering Gold Time Limit: 2 second ...

  5. LightOJ 1248 Dice (III) (期望DP / 几何分布)

    题目链接:LightOJ - 1248 Description Given a dice with n sides, you have to find the expected number of t ...

  6. LightOJ 1030 - Discovering Gold - [概率DP]

    题目链接:https://cn.vjudge.net/problem/LightOJ-1030 You are in a cave, a long cave! The cave can be repr ...

  7. Light oj 1030 概率DP

    D - Discovering Gold Crawling in process... Crawling failed Time Limit:2000MS     Memory Limit:32768 ...

  8. 概率dp+期望dp 题目列表(一)

    表示对概率和期望还不是很清楚定义. 目前暂时只知道概率正推,期望逆推,然后概率*某个数值=期望. 为什么期望是逆推的,例如你求到某一个点的概率我们可以求得,然后我们只要运用dp从1~n每次都加下去就好 ...

  9. LightOJ 1364 树形DP

    52张扑克牌,问拿到指定数量的4个花色的最少次数期望是多少,其中拿到joker必须马上将其视作一种花色,且要使后续期望最小. 转移很容易想到,主要是两张joker的处理,一个状态除了普通的4个方向的转 ...

随机推荐

  1. js对象及元素复制拷贝

    1.数组及对象拷贝: 浅拷贝var b=$.extend(false,{},a);//对象浅拷贝 var a={aa:111,bb:{bb1:22}}; var b=$.extend(false,{} ...

  2. Nginx 服务器搭建

    什么是Nginx ? Nginx与Apache IIS等软件一样,是一款服务器软件,为web站点提供服务 除此之外,Nginx 还是一款反向代理服务器,我们可以利用Nginx实现负载均衡 所谓负载均衡 ...

  3. golang 操作redis 错误:failed redigo: unexpected type for String, got type int64

    报错的代码: isExist,err := redis.String(conn.Do("EXISTS", key)) 这个操作返回的应该是bool类型,所有改成 isExist,e ...

  4. 前后台交互实现点击超链接通过指定的 url 去网络或者文件服务器下载文件

    前台 VUE 界面: <el-table-column prop="attachment" align="center" label="附件详情 ...

  5. Spring boot 配置文件 加载顺序

    springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 –file:./config/ – ...

  6. mingw编译ffmpeg 错误:Unknown option "--enable-memalign-hack"

    据说mingw编译ffmpeg的话需要添加 --enable-memalign-hack 开关 但如果源码是最新版比如:ffmpeg4.0.2 的话 好像已经禁用了该开关. “我可以确认新的ffmpe ...

  7. Haskell语言学习笔记(74)GADTs

    GADTs GADTs(Generalised Algebraic Data Types,广义代数数据类型)是对代数数据类型的一种扩展. 它允许在定义数据类型时明确指定类型参数的类型并使用模式匹配. ...

  8. 趣味编程:静夜思(Kotlin版)

    import java.util.* fun verticalWriting(txt:String, offset:Int) = txt.mapIndexed { i, c -> Pair(i, ...

  9. 福州大学软件工程W班-助教总结

    背景 福州大学软件工程W班,总人数46人,讲师汪老师. 前期期望 希望自己能够在课程当中起到引导作用,发挥助教最大的用处. 实际执行情况 第一个问题是自动化测试工具,该工具主要是用来测试程序WordC ...

  10. c语言基本数据类型及存储方式

    ; ; ; ; ; ; ; ; float a9 = 109.23; float a10 = 111.23; double a11 = 113.113; double a12 = 115.113; c ...