●Joyoi 收集邮票
题链:
http://www.joyoi.cn/problem/tyvj-2325
题解.1:
期望dp,(平方的期望不等于期望的平方。。。)
在这个题上坑了好久,也算是对期望的理解又深了一些。
很好的题解:http://www.cnblogs.com/ezyzy/p/6475861.html
再阐述一下平方的期望是在什么情况下可以递推的:
对于一个随机变量x,我们知道其每个取值的概率,
那么我们容易由定义得出这个随机变量的期望E(x)=p1*x1+p2*x2+...,
以及这个随机变量的平方的期望E(x²)=p1*x1²+p2*x2²+...。
现在由于种种原因,假设我们需要求出在这个随机变量的每个取值都加1但是概率不变的情况下的新的平方的期望E'(x²)=p1*(x1+1)²+p2*(x2+1)²+...,
(注意,只是权值改变,对应概率未变)
那么这个时候就可以用平方的期望的递推式子了:E'(x²)=E(x²)+2*E(x)+1反观这类题目的dp转移往往是分为当前状态成功与否两种情况,
而当我们确定了某种情况后,接下来就需要计算当前+后面的东西的总期望,再乘上这种情况的概率。
因为已确定了是成功还是失败,所以当前状态对期望的贡献只是在随机变量的取值上,而没有影响到其概率分布,所以才可以直接使用平方的期望的递推式子。
代码.1:
#include<bits/stdc++.h>
#define MAXN 10005
using namespace std;
double g[MAXN],f[MAXN];
int N;
int main(){
ios::sync_with_stdio(0);
cin>>N;
for(int i=N-1;i>=0;i--){
f[i]=f[i+1]+1.0*N/(N-i);
g[i]=1.0*i/N*(2*f[i]+1)+1.0*(N-i)/N*(g[i+1]+2*f[i+1]+1);
g[i]=g[i]/(N-i)*N;
}
cout<<fixed<<setprecision(2)<<(g[0]+f[0])/2<<endl;
return 0;
}
题解.2:
求期望。。。
正向枚举已经收集了i个,并计算收集第i个时的相关信息与贡献,
令a[i]表示收集了i个时期望购买了a次。
那么a[i+1]=a[i]+N/(N-i) (加上收集第i+1个时期望的购买次数)
然后要求收集第i+1个时期望的花费,
首先之前已经期望购买了a次,那么我们考虑:
首先一定要先买一次,价格为a+1
如果没买到(概率为i/N),再买一次,价格为a+2
如果还没买到(概率为(i/N)²),在买一次,价格为a+3
....(子子孙孙,无穷匮也。。。)
那么可以列出期望花费的式子:令p=i/N
A=(a+1)+(a+2)*p+(a+3)*p²+(a+4)*p³+.... [1]式
然后我们要求A的值,用错位相减法的得到,即:
A*p= (a+1)*p+(a+2)*p²+(a+3)*p³+.... [2]式
[1]式-[2]式:
(1-p)*A=a+1+p+p²+p³+...,是一个无穷项的等比数列
=a+1/(1-p)
所以得到A=(a+1/(1-p))/(1-p)
然后把A加进答案ans即可,(期望的线性可加性嘛,A即表示收集第i+1个所期望的花费)
代码.2:
#include<bits/stdc++.h>
#define MAXN 100005
using namespace std;
double p,a,ANS;
int N;
int main(){
ios::sync_with_stdio(0);
cin>>N;
for(int i=0;i<N;i++){
ANS+=(a+1.0*N/(N-i))/(1-1.0*i/N);
a+=1.0*N/(N-i);
}
cout<<fixed<<setprecision(2)<<ANS<<endl;
return 0;
}
●Joyoi 收集邮票的更多相关文章
- 【BZOJ-1426】收集邮票 概率与期望DP
1426: 收集邮票 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 261 Solved: 209[Submit][Status][Discuss] ...
- 【BZOJ1426】收集邮票 期望
[BZOJ1426]收集邮票 Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的, ...
- P4550 收集邮票
P4550 收集邮票 题目描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由 ...
- 收集邮票 (概率dp)
收集邮票 (概率dp) 题目描述 有 \(n\) 种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是 \(n\) 种邮票中的哪一种是等概率 ...
- Bzoj1426 收集邮票
Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 292 Solved: 232 Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一 ...
- 【bzoj1426】收集邮票
题目描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所 ...
- BZOJ 1426: 收集邮票 [DP 期望 平方]
传送门 题意: 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮 ...
- bzoj 1426:收集邮票 求平方的期望
显然如果收集了k天,ans=k*(k+1)/2=(k^2+k)/2.那么现在要求的就是这个东西的期望. 设f[i]表示已有i张邮票,收集到n张的期望次数,g[i]表示已有i张邮票,收集到n张的次数的平 ...
- P4550 收集邮票-洛谷luogu
传送门 题目描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢 ...
随机推荐
- 网络1712--c语言字符数组作业总结..
---恢复内容开始--- 作业亮点 1.总体情况 1.大部分同学利用了流程图后,对于思路的理解有了提升. 2.很多同学在总结方面写的很不错,能够罗列问题贴出解决问题,我们能够看到你们的进步 2.作业发 ...
- 201621123062《java程序设计》第六周作业总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰 ...
- python的Flask 介绍
Flask 介绍 知识点 微框架.WSGI.模板引擎概念 使用 Flask 做 web 应用 模板的使用 根据 URL 返回特定网页 实验步骤 1. 什么是 Flask? Flask 是一个 web ...
- Flask 学习 十六 部署
部署流程 manage.py 部署命令 每次安装升级只需运行deploy命令即可完成操作 @manager.command def deploy(): """执行部署任务 ...
- Hibernate之Hibernate的体系结构
体系结构简图: 这是一张体系结构的简图,其中的hibernate.properties文件的作用相当于配置文件hibernate.cfg.xml XML Mapping对应的就是映射文件 XXXX.h ...
- GitHub 上下载单个文件夹
写代码的一定经常去github上查看.下载一些源码,有时候会想下载一个项目中的一个文件夹里的内容,但是github上只提供了整个项目的下载,而整个项目里东西太多,压缩的文件太大,github的下载速度 ...
- JAVA_SE基础——31.this关键字
黑马程序员入学blog... 也算是学习笔记体会. this的通俗解释: 有一个A类,一个B方法,一个C变量,其中B和C都在类A中 this.B()就是调用A类中的B方法 this.C=1(假设C是一 ...
- 常用的汇编指令 movs stos
movsb 把寄存机esi所存的地址的数据以字节复制到edi movsw 把寄存机esi所存的地址的数据以word复制到edi movsd 把寄存机esi所存的地址的数据以dword复制到e ...
- python中 return 的用法
return 语句就是讲结果返回到调用的地方,并把程序的控制权一起返回 程序运行到所遇到的第一个return即返回(退出def块),不会再运行第二个return. 要返回两个数值,写成一行即可: de ...
- 从感知机到 SVM,再到深度学习(一)
在上篇博客中提到,如果想要拟合一些空间中的点,可以用最小二乘法,最小二乘法其实是以样例点和理论值之间的误差最小作为目标.那么换个场景,如果有两类不同的点,而我们不想要拟合这些点,而是想找到一条 ...