【BZOJ1426】收集邮票 题解 (期望)
题目:有n种不同的邮票,皮皮想收集所有种类的邮票。唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n。但是由于凡凡也很喜欢邮票,所以皮皮购买第k张邮票需要支付k元钱。
现在皮皮手中没有邮票,皮皮想知道自己得到所有种类的邮票需要花费的钱数目的期望。
----------------------------------
考虑递推。
设$f[i]$表示取了$i$种邮票,要取完剩下邮票的期望次数。显然$f[n]=0$。有$\frac{i}{n}$的概率是取到已经取过的,期望是$\frac{i}{n}*f[i]$,有$\frac{n-i}{n}$的概率取到没取过的,期望是$\frac{n-i}{n}*f[i+1]$。这一次取过后次数+1。所以$f[i]=\frac{i}{n}*f[i]+\frac{n-i}{n}*f[i+1]+1$。化简一下:$f[i]=f[i+1]+\frac{n}{n-i}$。
设$g[i]$表示已经取了$i$种邮票,要取完剩下的邮票的期望金钱。显然$g[n]=0$。有$\frac{i}{n}$的概率是取到已经取过的,期望是$\frac{i}{n}*(g[i]+f[i]+1)$。有$\frac{n-i}{n}$的概率取到没取过的,期望是$\frac{n-i}{n}*(g[i+1]+f[i+1]+1)$。化简后就是$g[i]=\frac{i}{n-i}*f[i]+g[i+1]+f[i+1]+\frac{n}{n-i}$。
顺便一提:期望DP的定义一般是“已经……还需要……的期望”。
代码:
- #include<bits/stdc++.h>
- using namespace std;
- int n;
- double f[],g[];
- int main()
- {
- cin>>n;
- for (int i=n-;i>=;i--) f[i]=f[i+]+(double)n/(double)(n-i);
- for (int i=n-;i>=;i--) g[i]=(double)i/(double)(n-i)*f[i]+g[i+]+f[i+]+(double)n/(double)(n-i);
- printf("%.2lf",g[]);
- return ;
- }
【BZOJ1426】收集邮票 题解 (期望)的更多相关文章
- 2018.08.31 bzoj1426 收集邮票(期望dp)
描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且 买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所以 ...
- bzoj1426: 收集邮票(期望)
推错半天式子T T 设f[i]为买了i种卡,期望再买几张有n种卡 设g[i]为买了i种卡,期望再花多少钱有n种卡 可以把当前买卡的价格看作1,则以后买的所有卡片要增加1元,于是要加上f[i]和f[i+ ...
- bzoj 1426: 收集邮票【期望dp】
我太菜了,看的hzwer的blog才懂 大概是设f[i]表示已经拥有了i张邮票后期望还要买的邮票数,这个转移比较简单是f[i]=f[i]*(i/n)+f[i+1]*((n-i)/n)+1 然后设g[i ...
- Bzoj1426 收集邮票
Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 292 Solved: 232 Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一 ...
- BZOJ 1426: 收集邮票 数学期望 + DP
Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且 买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡 ...
- 嘴巴题7 BZOJ1426: 收集邮票
Time Limit: 1 Sec Memory Limit: 162 MB Submit: 546 Solved: 455 [Submit][Status][Discuss] Description ...
- BZOJ 1426: 收集邮票 [DP 期望 平方]
传送门 题意: 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮 ...
- [P4550] 收集邮票 - 概率期望,dp
套路性地倒过来考虑,设\(f[i]\)表示拥有了\(i\)种票子时还需要多少次购买,\(g[i]\)表示还需要多少钱 推\(g[i]\)递推式时注意把代价倒过来(反正总数一定,从顺序第\(1\)张开始 ...
- 【BZOJ1426】收集邮票 期望
[BZOJ1426]收集邮票 Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的, ...
随机推荐
- centos7 安装部署 Jenkins
Jenkins 安装部署 1. 安装资源下载 Jenkin镜像地址: http://mirrors.jenkins-ci.org/status.html 选择清华大学镜像地址下载rpm https:/ ...
- [开源][示例更新]eCharts配置简化包OptionCreator[typescript版]
前言 eCharts作为国内优秀的开源图表工具,功能强大,但是使用中也存在一定的问题. 文档更新较慢,文档说明不详细. 前端使用的弱类型语言,数据结构在灵活的同时,也容易造成一些问题.例如某些属性到底 ...
- Linux多任务编程之四:exit()函数及其基础实验(转)
来源:CSDN 作者:王文松 转自Linux公社 exit()和_exit()函数 函数说明 创建进程使用fork()函数,执行进程使用exec函数族,终止进程则使用exit()和_exit() ...
- 使用IDEA创建Spring boot项目,继承mybaits。并进行简单的数据库查询操作
本文讲的是使用IEDA创建Spring boot项目,对于环境安装需要自行准备,如JDK1.8.Maven 3.3.IDEA编译器.Mysql5.7等需事前准备好. 1.创建Spring boot项目 ...
- python 三维散点插值 griddata
#三维点插值#在三维空间中,利用实际点的值推算出网格点的值import numpy as np point_grid =np.array([[0.0,0.0,0.0],[0.4,0.4,0.4],[0 ...
- 操作句柄Handle(7)
可以将Handle理解成访问对象的一个“句柄”.垃圾回收时对象可能被移动(对象地址发生改变),通过Handle访问对象可以对使用者屏蔽垃圾回收细节. Handle涉及到的相关类的继承关系如下图所示. ...
- 读取文件夹内容解析为Tree结构
package com.mine.io; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import ...
- JVM详解之:运行时常量池
目录 简介 class文件中的常量池 运行时常量池 静态常量详解 String常量 数字常量 符号引用详解 String Pool字符串常量池 总结 简介 JVM在运行的时候会对class文件进行加载 ...
- SQL语句 查询最新记录
要求:SQL语句按ID以最新时间查询最新的一条记录 方法1: select * from (select *, ROW_NUMBER() over(partition by id order by u ...
- java基础知识--数据类型
计算机时识别不了我们编写的代码语言,计算机中的数据全部采用二进制表示,即0和1表示的数字,每一个0或者1就是一个位,一个位叫做一个bit(比特).(实际上计算机只能识别高低电平,而不是0和1.) 字节 ...