P4550-收集邮票【期望dp】
前题
ZYCdalaoZYCdalaoZYCdalao让我推这题,然后我只推出了fff的推导,我还是太菜了QVQQVQQVQ
正题
题目链接:https://www.luogu.org/problemnew/show/P4550
题目大意
nnn种,每次随机买一个邮票(每种的概率均等),然后第kkk种要kkk元,求收集完所有邮票需要的期望钱数。
解题思路
首先设gig_igi表示购买iii个邮票,买完剩下的邮票需要的期望钱数,我们发现因为有kkk,我们很难计算答案,但我们可以将费用推后计算。先设fif_ifi表示拿到了iii个,要取完剩下的邮票需要购买的期望次数(倒推),那么有n−in\frac{n-i}{n}nn−i的概率买到正确的邮票,有in\frac{i}{n}ni的概率买到之前买过的邮票
fi=n−in∗fi+1+in∗fi+1f_i=\frac{n-i}{n}*f_{i+1}+\frac{i}{n}*f_i+1fi=nn−i∗fi+1+ni∗fi+1
fi=n−in∗fi+1+in∗fi+1f_i=\frac{n-i}{n}*f_{i+1}+\frac{i}{n}*f_i+1fi=nn−i∗fi+1+ni∗fi+1
n−in∗fi=n−in∗fi+1\frac{n-i}{n}*f_i=\frac{n-i}{n}*f_i+1nn−i∗fi=nn−i∗fi+1
fi=fi+1+nn−if_i=f_{i+1}+\frac{n}{n-i}fi=fi+1+n−in
然后我们考虑如何推导gig_igi,我们每次有in\frac{i}{n}ni的概率买到已经有了的,有n−in\frac{n-i}{n}nn−i的概率买到没有的,因为费用推后计算,所以每次后面取到的费用都会+1+1+1,所以现在的费用就是之前的购买次数加上原来的费用fi+1f_{i}+1fi+1,那么加上前面的购买费用就是gi+fi+1g_i+f_i+1gi+fi+1
那么推导
gi=in(gi+fi)+n−in(gi+1+fi+1)+1g_i=\frac{i}{n}(g_i+f_i)+\frac{n-i}{n}(g_{i+1}+f_{i+1})+1gi=ni(gi+fi)+nn−i(gi+1+fi+1)+1
gi=in∗gi+in∗fi+n−in(gi+1+fi+1)+1g_i=\frac{i}{n}*g_i+\frac{i}{n}*f_i+\frac{n-i}{n}(g_{i+1}+f_{i+1})+1gi=ni∗gi+ni∗fi+nn−i(gi+1+fi+1)+1
n−ingi=in∗fi+n−in(gi+1+fi+1)\frac{n-i}{n}g_i=\frac{i}{n}*f_i+\frac{n-i}{n}(g_{i+1}+f_{i+1})nn−igi=ni∗fi+nn−i(gi+1+fi+1)
gi=in−i∗fi+gi+1+fi+1+1g_i=\frac{i}{n-i}*f_i+g_{i+1}+f_{i+1}+1gi=n−ii∗fi+gi+1+fi+1+1
overoverover
codecodecode
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=11000;
double n;
double f[N],g[N];
int main()
{scanf("%lf",&n);for(int i=n-1;i>=0;i--){f[i]=f[i+1]+(double)n/(n-i);g[i]=(double)(f[i]+1)*i/(n-i)+g[i+1]+f[i+1]+1;}printf("%.2lf",g[0]);
}
P4550-收集邮票【期望dp】相关推荐
- 洛谷P4550 收集邮票(概率期望)
传送门 神仙题啊--这思路到底是怎么来的-- ps:本题是第$k$次买邮票需要$k$元,而不是买的邮票标号为$k$时花费$k$元 我们设$g[i]$表示现在有$i$张,要买到$n$张的期望张数,设$P ...
- P4550 收集邮票-洛谷luogu
传送门 题目描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢 ...
- BZOJ 1426 收集邮票 ——概率DP
$f(i)$表示现在有$i$张,买到$n$张的期望 所以$f(i)=f(i+1)+\frac {n}{n-i}$ 费用提前计算,每张邮票看做一元,然后使后面每一张加1元 $g(i)$表示当前为$i$张 ...
- luogu P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现) Weblin ...
- [SCOI2008]奖励关(期望dp)
你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝 ...
- 【bzoj4318】OSU! 期望dp
题目描述 osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的0 ...
- 【loj6342】跳一跳 期望dp
题目描述 一个人从 $1$ 开始向 $n$ 跳,在 $i$ 时会等概率跳到 $i,i+1,...,n$ 之一.求从 $1$ 跳到 $n$ 的期望步数. $n\le 10^7$ . 题解 期望dp傻逼题 ...
- 【高斯消元】兼 【期望dp】例题
[总览] 高斯消元基本思想是将方程式的系数和常数化为矩阵,通过将矩阵通过行变换成为阶梯状(三角形),然后从小往上逐一求解. 如:$3X_1 + 2X_2 + 1X_3 = 3$ $ ...
- Luogu P3251 [JLOI2012]时间流逝 期望dp
题面 题面 题解 期望\(dp\)好题! 今年\(ZJOI\)有讲过这题... 首先因为\(T\)只有\(50\),大力\(dfs\)后发现,可能的状态数最多只有\(20w\)左右,所以我们就可以大力 ...
- 【bzoj5197】[CERC2017]Gambling Guide 期望dp+堆优化Dijkstra
题目描述 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易时,你可以选择 ...
最新文章
- 指定字符串按指定长度进行剪切
- react组件设计原则_React组件设计规则
- Java 8中HotSpot选项的改进文档
- [原创软件]体验组批量加分工具
- 小程序开发(5)-之封装组件
- QGIS+GH + MapServer
- Docker升级Wekan
- 如何查找期刊是否被SCI收录
- 如何用ps修改图片文字颜色
- Opengl ES之FBO
- 苹果截屏快捷键_MacOS截屏的那些事儿
- 基于C/C++语言的停车场管理系统编程课程设计超详细
- YTC, YTM, YTW
- python爬虫爬取大学排名并存入数据库进行数据可视化
- Unity 【Content Size Fitter】- 聊天气泡自动适配Text文本框大小
- 服务器系统需要安装什么软件有哪些,在服务器上安装操作系统和必备软件
- 滴滴出行数据应用平台建设实践
- STM32三条总线(AHB、APB1、APB2)的外设映射情况
- 3com 4500交换机划分vlan
- 新零售的供应链:零售商、经销商、物流服务商、品牌商的运营
热门文章
- 张萍萍山东大学计算机科学系毕业生,并行驰骋,放“码”来战!看先导杯大奖赛上山大风采...
- selenium java 参数化_Java+selenium 自动化测试【03】-- 数据驱动之参数化
- linux编程两个子进程,Linux中fork同时创建多个子进程的方法
- python property setter_Python:动态属性 property setter 以及 __getattr__ 属性
- 模拟器显示空白图片_Kawaks街机模拟器,还是小时候的味道!
- linux 全双工 wifi热点,Linux中的同时套接字读/写(“全双工”)(特别是aio)
- idea如何导入java工程_Eclipse java web项目 ,导入IntelliJ IDEA 完整操作!
- 从当前元素继续寻找_云漫圈 | 寻找无序数组的第k大元素
- [Java基础]int和String的相互转换
- 高等数学上-赵立军-北京大学出版社-题解-练习5.4