Problem

poj-3682

题目大意:抛一次硬币有\(p\)的概率得到正面,当有\(n\)次正面时停止,抛第\(i\)次的花费为\(2i-1\),求抛的期望次数和期望花费

Solution

本来做这题就是想巩固一下期望方面的东西,可能有点拓展

第一问比较明显,设\(f_i\)表示抛掷了\(i\)次时的期望天数,依题意有:

\(f_i=p\cdot f_{i-1}+(1-p)\cdot f_i+1\)

解释一下,对于抛一次,有\(p\)的概率正面,只要再抛\(f_{i-1}\)次即可,所以加上\(p\cdot f_{i-1}\),有\(1-p\)的概率反面,则仍要抛\(f_i\)次,所以加上\((1-p)\cdot f_i\),再加上这次抛掷的一次,我们就得到了有\(i\)次正面时天数的期望

上面的式子移项消掉,得到\(f_i=f_{i-1}+\frac 1p\),即\(f_i=\frac ip\)


第二问有点意思,设\(E_i\)表示抛掷了\(i\)次正面时的期望花费,仿照上面的式子写出:

\(E_i=p\cdot E_{i-1}+(1-p)\cdot E_i+2f_i-1\)

式子解释和上面一样,只是抛掷的成本变为了\(2f_i-1\)

同样化简,\(E_i=E_{i-1}+\frac {2i}{p^2}-\frac 1p\),求和可得\(E_i=\frac {(1+n)n}{p^2}-\frac np\)


至于为什么抛掷花费可以用\(2f_i-1\)这种利用期望表示的式子,其实是因为\(2f_i-1\)这个式子为一次函数,我们可以用两种方法证明在外部函数为一次函数的情况下,可以利用期望做自变量得到因变量的期望

同时扩展一下,我们可以证明,仅有一次函数满足这个条件

我们明确一下证明的内容,即若\(x_0\)为\(x\)的期望,若\(F(x_0)\)等于\(F(x)\)的期望,则\(F(x)\)一定为一次函数(为了方便表达,设\(F^{'}(x)\)为\(F(x)\)的期望)

①证明一次函数可行

由于\(x_0=\sum p_iv_i\),我们将其中\(p_i\)的影响去掉,用一个无穷集合记录,在这个集合中\(v_i:v_j\)的数量比为\(p_i:p_j\),而\(x_0\)则可以表达为这个集合元素的平均数(实际上就是将加权平均数化为了平均数,更便于理解)

而\(x_0\)的定义为集合数中的一次方平均数,则在一次函数\(F(x)\)的影响下,\(\frac {\sum F(x)}n=F(\frac {\sum x}n)\)

推广一下,若\(x_0\)为元素的\(k\)次方期望(加权平均值),则仅有\(k\)次函数满足上述性质

②证明仅有一次函数可行

由于\(x_0=\sum p_iv_i\)

则有\(F(x_0)=F(\sum p_iv_i),F^{'}(x)=\sum p_iF(v_i)\)

如果要求\(F(x_0)=F^{'}(x)\),则要求\(F(\sum p_iv_i)=\sum p_iF(v_i)\),满足条件下\(F(pv)=pF(v)\),则\(F(x)\)一定为正比例函数,但考虑到求\(\sum\)时项的数量都是相等的,所以我们可以在正比例函数的基础上加上一个常数,这样在求\(\sum\)后常数之间可以抵消。由此可证\(F(x)\)一定要求为一次函数

Code

#include <cstdio>
int main(){
int n;double p;
while(1){
scanf("%d%lf",&n,&p);if(!n)return 0;
printf("%.3lf %.3lf\n",n/p,1.0*n*(n+1-p)/(p*p));
}
}

题解-poj3682King Arthur's Birthday Celebration的更多相关文章

  1. POJ3682King Arthur's Birthday Celebration(数学期望||概率DP)

    King Arthur is an narcissist who intends to spare no coins to celebrate his coming K-th birthday. Th ...

  2. poj-3682 King Arthur's Birthday Celebration

    C - King Arthur's Birthday Celebration POJ - 3682 King Arthur is an narcissist who intends to spare ...

  3. POJ3682 King Arthur's Birthday Celebration

    King Arthur is an narcissist who intends to spare no coins to celebrate his coming K-th birthday. Th ...

  4. 【概率论】【POJ 3682】【King Arthur's Birthday Celebration】

    题意:进行翻硬币实验,若k次向上则结束,进行第n次实验需花费2*n-1的费用,询问期望结束次数及期望结束费用 设F[i]为第i次结束时的概率 F[i]=  c(i-1,k-1)*p^k*(1-p)^( ...

  5. King Arthur's Birthday Celebration

    每天抛一个硬币,硬币正面朝上的几率是p,直到抛出k次正面为止结束,第一天抛硬币需花费1,第二天花费3,然后是5,7,9……以此类推,让我们求出抛硬币的天数的期望和花费的期望. 天数期望: A.投出了k ...

  6. POJ3682;King Arthur's Birthday Celebration(期望)

    传送门 题意 进行翻硬币实验,若k次向上则结束,进行第n次实验需花费2*n-1的费用,询问期望结束次数及期望结束费用 分析 我们令f[i]为结束概率 \[f[i]=C_{i-1}^{k-1}*p^k* ...

  7. [POJ3682]King Arthur's Birthday Celebration[期望DP]

    也许更好的阅读体验 \(\mathcal{Description}\) 每天抛一个硬币,硬币正面朝上的几率是p,直到抛出k次正面为止结束,第\(i\)天抛硬币的花费为\(2i-1\),求出抛硬币的天数 ...

  8. 题解 [CF525D] Arthur and Walls

    题面 解析 首先考虑将一个\('*'\)变成\('.'\)后会形成什么, 显然至少是一个\(2\times 2\)的矩形. 因为\(1\times 1\)和\(1\times 2\)的改了没用啊, 而 ...

  9. poj 3682 King Arthur's Birthday Celebration (期望dp)

    传送门 解题思路 第一问比较简单,设$f[i]​$表示扔了$i​$次正面向上的硬币的期望,那么有转移方程 : $f[i]=f[i]*(1-p)+f[i-1]*p+1​$,意思就是$i​$次正面向上可以 ...

随机推荐

  1. python第二次周末大作业

    题目 ''' HR人力资源管理. 1. 菜单: ("查看员⼯信息","添加员⼯信息", "修改员⼯信息", "删除员⼯信息&quo ...

  2. ruby-----render讲解

    Ruby rails页面跳转代码如下: 1.render(:text => string) 2.render(:inline => string, [:type => "r ...

  3. idea代码回退到前面的版本

    好多时候一个项目添加了新功能,导致整个项目不能运行,而之前的版本又没有保存.怎么办了?回退到以前的版本就OK啦, 没错IDEA就是这个智能化. 第一步:点击项目名称->右键->选择Loca ...

  4. jQuery使用(二):DOM样式操作和属性操作

    DOM取值与赋值 .html() .text() .size() 1.html()方法类似原生DOM的属性innerHTML,不传入参数的时候默认为取指定元素内的HTML内容,包含前后空白文本结构,以 ...

  5. PHP7 学习笔记(十二)PHPExcel vs PhpSpreadsheet and PHP_XLSXWriter

    前言 PhpSpreadsheet是PHPExcel的下一个版本. 它打破了兼容性,极大地提高了代码库的质量(命名空间,PSR合规性,使用最新的PHP语言功能等).由于所有努力都转移到了PhpSpre ...

  6. 转--select/poll/epoll到底是什么一回事

    面试题:说说select/poll/epoll的区别. 这是面试后台开发时的高频面试题,属于网络编程和IO那一块的知识.Android里面的Handler消息处理机制的底层实现就用到了epoll. 为 ...

  7. Silverlight界面设计

    d:DesignHeight="300" d:DesignWidth="400"> 并不会限定Grid的大小,最终的效果,还要根据Grid的大小,Grid ...

  8. 50个最常用的Linux命令

    转载至:http://gywbd.github.io/posts/2014/8/50-linux-commands.html tar grep find ssh sed awk vim diff so ...

  9. Java时间转换的一个特性

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date codedat ...

  10. java 用PDFBox 删除 PDF文件中的某一页

    依赖: <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox-app ...