博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P4550 收集邮票(概率期望)
阅读量:6067 次
发布时间:2019-06-20

本文共 1522 字,大约阅读时间需要 5 分钟。

 

神仙题啊……这思路到底是怎么来的……

ps:本题是第$k$次买邮票需要$k$元,而不是买的邮票标号为$k$时花费$k$元

我们设$g[i]$表示现在有$i$张,要买到$n$张的期望张数,设$P(x,i)$表示买$x$次能从$i$张买到$n$张的概率,则有$$g[i]=\sum_{x=0}^\infty x\times P(x,i)$$

然后考虑一下递推关系式,有$$g[i]=g[i+1]+\frac{n}{n-i},g[n]=0$$

于是就可以愉快的递推了

然后设$f[i][j]$表示现在有$i$张邮票,下一张邮票要花$j$元,买到$n$张的期望花费。不难发现如下的递推式$$f[i][j]=j+f[i][j+1]\times \frac{i}{n}+f[i+1][j+1]\times \frac{n-i}{i}$$

然而因为$j$可能是无限大,所以我们没办法简单的递推。

于是换一个角度思考,我们考虑在$f[i][j]$的情况下还需要买几次才能够买齐,则有$$f[i][j]=\sum_{x=0}^\infty (j+(j+1)+...+(j+x-1))\times P(x,i)$$

其中$x$表示枚举次数,小括号里是$x$次购买所需的花费

继续推$$f[i][j]=\sum_{x=0}^\infty \frac{x(2j+x-1)}{2} \times P(x,i)$$

然后把$j+1$带进去,可以得出$$f[i][j+1]-f[i][j]=\sum_{x=0}^\infty x\times P(x,i)=g[i]$$

然后再考虑一下原来的递推公式$$f[i][j]=j+f[i][j+1]\times \frac{i}{n}+f[i+1][j+1]\times \frac{n-i}{i}$$

$$f[i][j]=j+(f[i][j]+g[i])\times \frac{i}{n}+(f[i+1][j]+g[i+1])\times \frac{n-i}{i}$$

然后移项之后可得$$f[i][j]=\frac{(j+g[i]\times \frac{i}{n}+(f[i+1][j]+g[i+1])\times \frac{n-i}{i})\times n}{n-i}$$

然后考虑一下,因为答案是$f[1][0]$,所以所有$j$不等于$0$的情况对我们都没有用,于是可以把第二维省略,只考虑$j=0$的情况

$$f[i]=\frac{(j+g[i]\times \frac{i}{n}+(f[i+1]+g[i+1])\times \frac{n-i}{i})\times n}{n-i}$$

边界条件为$f[n]=0$

然后就可以直接递推了

1 //minamoto 2 #include
3 const int N=10005; 4 double f[N],g[N],m;int n; 5 int main(){ 6 scanf("%d",&n),f[n]=g[n]=0,m=n; 7 for(int i=n-1;i>=0;--i) g[i]=g[i+1]+m/(m-i); 8 for(int i=n-1;i>=0;--i) 9 f[i]=((f[i+1]+g[i+1])*(m-i)/m+g[i]*i/m+1.0)*m/(m-i);10 printf("%.2lf\n",f[0]);11 return 0;12 }

 

转载于:https://www.cnblogs.com/bztMinamoto/p/9792416.html

你可能感兴趣的文章
程序员最喜爱的12个Android应用开发框架二(转)
查看>>
vim学习与理解
查看>>
DIRECTSHOW在VS2005中PVOID64问题和配置问题
查看>>
MapReduce的模式,算法以及用例
查看>>
《Advanced Linux Programming》读书笔记(1)
查看>>
zabbix agent item
查看>>
一步一步学习SignalR进行实时通信_7_非代理
查看>>
AOL重组为两大业务部门 全球裁员500人
查看>>
字符设备与块设备的区别
查看>>
为什么我弃用GNOME转向KDE(2)
查看>>
Redis学习记录初篇
查看>>
爬虫案例若干-爬取CSDN博文,糗事百科段子以及淘宝的图片
查看>>
Web实时通信技术
查看>>
第三章 计算机及服务器硬件组成结合企业运维场景 总结
查看>>
IntelliJ IDEA解决Tomcal启动报错
查看>>
默认虚拟主机设置
查看>>
七周五次课(1月26日)
查看>>
Linux系统一些系统查看指令
查看>>
php中的短标签 太坑人了
查看>>
[译] 可维护的 ETL:使管道更容易支持和扩展的技巧
查看>>