Description

有n种不同的邮票,皮皮想收集所有种类的邮票。唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且
买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n。但是由于凡凡也很喜欢邮票,所以皮皮购买第k
张邮票需要支付k元钱。现在皮皮手中没有邮票,皮皮想知道自己得到所有种类的邮票需要花费的钱数目的期望。

Input

一行,一个数字N,  N<=10000

Output

要付出多少钱. 保留二位小数

题解:

挺神的一道期望 $DP$.
令 $f_{i}$ 表示已经有 $i$ 种不同的邮票,还需购买的期望次数.
令 $g_{i}$ 表示已经有 $i$ 种不同的邮票,还需花的期望钱数.
先考虑 $f_{i}$ 怎么求.
依据定义,不难得知 $f_{n}=0$.
而 $f_{i}=P(没抽到新的)\times 次数 + P(抽到新的)\times 次数$.
即 $f_{i}=\frac{i}{n}\times(f_{i}+1)+\frac{n-i}{n}\times(f_{i+1}+1)$.
整理,得 $f_{i}=\frac{n}{n-i}+f_{i+1}$.
再考虑 $g_{i}$
 
$g_{i}=(g_{i}+1+f_{i})\times\frac{i}{n}+(g_{i+1}+1+f_{i+1})\times\frac{n-i}{n}$.
考虑一下具体含义:
依据题目,抽到第 $k$ 张牌的代价为 $k$ 元.
总代价与抽到卡牌的顺序是无关的.
我们就可以默认当前抽到的卡牌代价是 $1$ 元,后面的卡牌依次排开.
考虑未抽到新卡牌的情况:
已经有 $i$ 种牌到终止局面的代价为 $f_{i}$,抽到当前卡牌的代价已被我们定义为 $1$. 代价是一个依次加 $1$ 的数列,等同于当前局面
到达 $f_{i}$ 后,每张卡牌的代价都要比原来多 $1$.
而根据我们定义的方程,已有 $i$ 张后,我们期望抽的次数是 $f_{i}$.
那么,对于 $f_{i}$ 张卡片,每张的价格都加 $1$ 即可.
对于 $g_{i+1}$ 的情况同理即可.
$g_{i}=(g_{i}+1+f_{i})\times\frac{i}{n}+(g_{i+1}+1+f_{i+1})\times\frac{n-i}{n}$,整理一下即可. 
 
#include <bits/stdc++.h>
using namespace std;
double n,f[10010],s[10010];
int main()
{
scanf("%lf",&n);
for(int i=n-1;i>=0;i--)
{
s[i]=s[i+1]+n/(n-i);
f[i]=f[i+1]+s[i+1]+s[i]*i/(n-i)+n/(n-i);
}
printf("%.2f",f[0]);
return 0;
}

  

最新文章

  1. MyBatis基础入门--知识点总结
  2. less hack 兼容
  3. 《Invert》开发日志00:缘起
  4. JVM-JDK命令行工具
  5. Discuz 3.X 整合 CAS 的方法
  6. DBA_Oracle海量数据处理分析(方法论)
  7. (一)初探HTML!
  8. leecode 每日解题思路 152 Maximun Product Subarray
  9. DOM事件处理程序-事件对象-键盘事件
  10. 《第一行代码》学习笔记29-内容提供器Content Provider(2)
  11. DB9_公头_母头_串口引脚定义及RS-232串口线制作方法
  12. UVA 11992 线段树
  13. 改写BlogEngine.NET头像上传实现方式(使用baidu.flash.avatarMaker)
  14. asp.net mvc 动态编译生成Controller
  15. hihocoder 1249(2015ACM/ICPC北京)
  16. TCP/IP 通信
  17. Pyhon流程控制
  18. Python3基础 list reverse 反转列表
  19. 解释变量(Explanatory Variable)
  20. 通过domoticz restful接口更新数据 c# 控制台程序

热门文章

  1. GIT的API主要应用示例
  2. 【ACM】nyoj_6_喷水装置(1)_201308150853
  3. 网络流入门 Drainage Ditches
  4. PHP array_diff()
  5. Android中检測字符编码(GB2312,ASCII,UTF8,UNICODE,TOTAL——ENCODINGS)方法(一)
  6. double型转换成string型
  7. 【Nginx】模块化设计
  8. extjs_07_combobox&amp;amp;tree&amp;amp;chart
  9. 严格符合CommonJS规范的包特性
  10. Android Back键和Home键的区别