Discovering Gold LightOJ - 1030 || 概率与期望求法区别
#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 || 概率与期望求法区别的更多相关文章
- 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 ...
- Discovering Gold lightoj 1030
一排1到n的格子,每个格子上有黄金 ai ,你最开始在 1 号,每一次投骰子决定到哪一个格子,超出1~n范围则重新投掷,你到了哪个格子就得到哪个格子的金币,问最终在n 能得到金币的期望. 思路:做题经 ...
- lightoj 1030 概率dp
题目链接:http://lightoj.com/volume_showproblem.php?problem=1030 #include<cstdio> #include<cstri ...
- LightOJ 1030 Discovering Gold (概率/期望DP)
题目链接:LightOJ - 1030 Description You are in a cave, a long cave! The cave can be represented by a \(1 ...
- LightOJ - 1030 Discovering Gold —— 期望
题目链接:https://vjudge.net/problem/LightOJ-1030 1030 - Discovering Gold PDF (English) Statistics For ...
- [LOJ 1030] Discovering Gold
B - Discovering Gold Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu ...
- 1030 - Discovering Gold
1030 - Discovering Gold PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 M ...
- Light oj 1030 概率DP
D - Discovering Gold Crawling in process... Crawling failed Time Limit:2000MS Memory Limit:32768 ...
- 概率dp+期望dp 题目列表(一)
表示对概率和期望还不是很清楚定义. 目前暂时只知道概率正推,期望逆推,然后概率*某个数值=期望. 为什么期望是逆推的,例如你求到某一个点的概率我们可以求得,然后我们只要运用dp从1~n每次都加下去就好 ...
随机推荐
- 【php】读取"文件列表"按时间倒序显示,并递归显示各层文件夹、!
思路: 1.读取该php所在文件夹的文件列表,用"改动时间.文件名称"做键值对,塞入数组.对"改动时间"倒序.(貌似不能直接按时间倒序读取文件列表,此处为间接方 ...
- hadoop eclipse插件生成
hadoop eclipse插件生成 做了一年的hadoop开发.还没有自动生成过eclipse插件,一直都是在网上下载别人的用,今天有时间,就把这段遗憾补回来,自己生成一下,废话不说,開始了. 本文 ...
- BZOJ 2115: [Wc2011] Xor DFS + 线性基
2115: [Wc2011] Xor Time Limit: 10 Sec Memory Limit: 259 MB Description Input 第一行包含两个整数N和 M, 表示该无向图中 ...
- YARN commands are invoked by the bin/yarn script.
Apache Hadoop 2.9.0 – YARN Commands http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-sit ...
- mysql无法远程访问
最近使用Navicat for MySQl访问远程mysql数据库,出现报错, 显示“1130 - Host'xxx.xxx.xxx.xxx' is not allowed to connect to ...
- IE9不能直接引用Console
问题: 公司有个项目,功能很简单,读取业务数据,展示在页面上. 一个很简单的问题,却因为目标浏览器是IE9,卡了三天. 前端给的反馈是: 在IE9下,程序一会儿对,一会儿不对--第一次刷不出来,多刷几 ...
- js中一些常见写法的含义
1. 常见格式:(function() { /* code */ })(); 解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括号 ...
- python读取一个文件的每一行判断是否为素数,并把结果写到另一个文件中
刚刚学习python的菜鸟,这道题包括:文件的读写,python的参数调用,异常的使用,函数的使用 创建一个文本文件inti_prime.txt 执行命令:python Prime.py init_p ...
- UIFont 字体样式 [UIFont fontWithName~];
设置字体样式代码:[UIFont fontWithName:@"Arial-BoldMT" size:15] 下边一一列举: 一:Font Family: American Typ ...
- BZOJ_3063_[Usaco2013]Route Designing_DP
BZOJ_3063_[Usaco2013]Route Designing_DP Description After escaping from the farm, Bessie has decided ...