#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. Android Menu开源项目整合工程

    本实例整合了关于Android Menu的优秀开源代码,方便有需要用到Menu开源项目的小伙伴使用. 一.整合的项目有: SlidingMenu:https://github.com/jfeinste ...

  2. Pattern: API Gateway / Backend for Front-End

    http://microservices.io/patterns/apigateway.html Pattern: API Gateway / Backend for Front-End Contex ...

  3. ZOJ3469 Food Delivery —— 区间DP

    题目链接:https://vjudge.net/problem/ZOJ-3469 Food Delivery Time Limit: 2 Seconds      Memory Limit: 6553 ...

  4. codeforces 433C. Ryouko's Memory Note 解题报告

    题目链接:http://codeforces.com/problemset/problem/433/C 题目意思:一本书有 n 页,每页的编号依次从 1 到 n 编排.如果从页 x 翻到页 y,那么| ...

  5. POJ-3352 Redundant Paths

    In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1..F) t ...

  6. 利用百度地图API制作房产酒店地图

    摘要: 想亲手制作一张酷讯.去哪儿.安居客.链接地产那样的房产.酒店地图麼?那赶快来学习吧.(以酷讯为例,如下图) 更多成功案例请点击:http://dev.baidu.com/wiki/map/in ...

  7. 屏幕适配-使用autoLayout

    当遇见xib中无法删除的控件时. 将这个错误的控件拖离本xib(第一个元素.xib文件是有许多元素组成的集合),确保这个xib是正确的.重新创建一个xib文件,将这个正确的xib元素整个复制过去. 在 ...

  8. 预处理指令#pragram

    #pragma介绍 #pragma是一个预处理指令,pragma的中文意思是『编译指示』.它不是Objective-C中独有的东西(貌似在C/C++中使用比较多),最开始的设计初衷是为了保证代码在不同 ...

  9. [SDOI 2008] 洞穴勘测

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2049 [算法] LCT动态维护森林连通性 时间复杂度 : O(NlogN ^ 2) ...

  10. limit的用法

    limit子句可以用于强制select语句返回指定的记录数.limit接受一个或两个数字参数,参数必须是整数常量.如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最 ...