#include<cstdio>//wrong_codes
#include<algorithm>
using namespace std;
double ans[],anss;
int a[],T,TT,n,endd;
int main()
{
int i,j;
scanf("%d",&T);
for(TT=;TT<=T;TT++)
{
scanf("%d",&n);
for(i=;i<=n;i++)
scanf("%d",&a[i]);
for(i=;i<=n;i++)
ans[i]=;
anss=;
ans[]=;
for(i=;i<=n;i++)
{
endd=n-i<?n-i:;
for(j=;j<=endd;j++)
ans[i+j]+=ans[i]/endd;
anss+=a[i]*ans[i];
}
printf("Case %d: %.9lf\n",TT,anss);
}
return ;
}

注意:虽然以上的代码能通过,但是...下次还是不要用了。

代码思路就是求出到达每一格的概率,然后每一格的金子乘上到达这一格的概率之和就是总期望。

但是,这样做的时候会遇到很多难以理解的问题。比如以下一个看起来同样有着合理的想法的方法:ans[i]表示到达i格拿到的金币期望,再做一些很显然的递推。这个就是错误的。

顺推的话,相比倒推,更容易出错/遗漏/...。

 #include<cstdio>//wrong_codes
#include<algorithm>
using namespace std;
double ans[];
int a[],T,TT,n;
int main()
{
int i,j;
scanf("%d",&T);
for(TT=;TT<=T;TT++)
{
scanf("%d",&n);
for(i=;i<=n;i++)
scanf("%d",&a[i]);
for(i=;i<=n;i++)
ans[i]=;
ans[]=a[];
for(i=;i<=min(n,);i++)
{
for(j=;j<i;j++)
ans[i]+=ans[j];
ans[i]/=(i-);
ans[i]+=(double)a[i];
}
for(i=min(n,)+;i<=n;i++)
{
for(j=;j<=;j++)
ans[i]+=ans[i-j];
ans[i]/=;
ans[i]+=(double)a[i];
}
printf("Case %d: %.9lf\n",TT,ans[n]);
}
return ;
}

正确的做法就是:概率正推,期望倒推。http://blog.csdn.net/nameofcsdn/article/details/52082746

ans[i]表示从i格出发得到gold的期望。ans[i]=sum{ans[i+p]}(1<=p<=6)+a[i]

Discovering Gold LightOJ - 1030 || 概率与期望求法区别的更多相关文章

  1. Discovering Gold LightOJ - 1030 (概率dp)

    You are in a cave, a long cave! The cave can be represented by a 1 x N grid. Each cell of the cave c ...

  2. Discovering Gold lightoj 1030

    一排1到n的格子,每个格子上有黄金 ai ,你最开始在 1 号,每一次投骰子决定到哪一个格子,超出1~n范围则重新投掷,你到了哪个格子就得到哪个格子的金币,问最终在n 能得到金币的期望. 思路:做题经 ...

  3. lightoj 1030 概率dp

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

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

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

  5. LightOJ - 1030 Discovering Gold —— 期望

    题目链接:https://vjudge.net/problem/LightOJ-1030 1030 - Discovering Gold    PDF (English) Statistics For ...

  6. [LOJ 1030] Discovering Gold

    B - Discovering Gold Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

  7. 1030 - Discovering Gold

    1030 - Discovering Gold    PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 M ...

  8. Light oj 1030 概率DP

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

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

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

随机推荐

  1. iOS面试常见题

    1.耶稣有13个门徒,当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13个人围坐一圈,从第一个人開始循环报数,数到三排除,最后剩下的人就是叛徒 int people[13] = {1,2,3, ...

  2. 例子:两个表根据productID合并

  3. 从数据源拉取数据,将数据内容与一组搜索项做比对 go func() chanel

    https://github.com/goinaction/code [root@hadoop3 sample]# go run main.go 2018/07/30 17:45:39 Registe ...

  4. DOM操作一

    1.通过ID选取元素 var section = document.getElementById("section1"); 2.通过ID查找多个元素 function getEle ...

  5. JVM内存分配策略、各个代区、FullGC/MinorGC

    主要讨论默认的Serial/Serial Old内存分配: 一.几种分配方案 1.  对象优先在Eden分配: 一般情况下,对象会在新生代的Eden区分配,Eden区没有足够空间时,虚拟机会 发起一次 ...

  6. 5.3linux下C语言socket网络编程简例

    原创文章,转载请注明转载字样和出处,谢谢! 这里给出在Linux下的简单socket网络编程的实例,使用tcp协议进行通信,服务端进行监听,在收到客户端的连接后,发送数据给客户端:客户端在接受到数据后 ...

  7. devm_regmap_init_i2c【转】

    本文转载自:http://blog.csdn.net/u011975319/article/details/52128845 本文有此处转载http://blog.csdn.net/luckywang ...

  8. LoadRunner检查点使用小结

    LR中检查点有两种:图片和文字. 常用检查点函数如下: 1)web_find()函数用于从 HTML 页中搜索指定的文本字符串: 2)web_reg_find()函数注册一个请求,以在下一个操作函数( ...

  9. 一步一步学Silverlight 2系列文章

    概述 由TerryLee编写的<Silverlight 2完美征程>一书,已经上市,在该系列文章的基础上补充了大量的内容,敬请关注.官方网站:http://www.dotneteye.cn ...

  10. web开发中的mysql使用

    一.单机mysql与mysql集群 1. 单机mysql很好理解,在一台物理机上安装好mysql服务端程序,使用这一台机器的硬件(cpu,内存,硬盘)进行数据的处理. 2.mysql集群 MySQL集 ...