[bzoj1426]收集邮票 期望DP
来源:互联网 发布:中文相似度匹配算法 编辑:程序博客网 时间:2024/06/01 07:25
1426: 收集邮票
Time Limit: 1 Sec Memory Limit: 162 MB[Submit][Status][Discuss]
Description
有n种不同的邮票,皮皮想收集所有种类的邮票。唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n。但是由于凡凡也很喜欢邮票,所以皮皮购买第k张邮票需要支付k元钱。 现在皮皮手中没有邮票,皮皮想知道自己得到所有种类的邮票需要花费的钱数目的期望。
Input
一行,一个数字N N<=10000
Output
要付出多少钱. 保留二位小数
Sample Input
3
Sample Output
21.25
HINT
有点玄
设f[i]表示有了i种邮票还需要的邮票数,g[i]表示还需要的钱数。
先考虑简化版:每张邮票都只需要1元钱,期望的花费?
f[i]=i/n*f[i]+(n-i)/n*f[i+1]+1
但是这时的花费和之前买了多少次有关
我们可以改变一下费用的计算方式,认为买的最后一张邮票的花费为1,倒数第k张的花费为k
g[i]=i/n*(g[i]+f[i]+1)+(n-i)/n*(g[i+1]+f[i+1]+1)
#include<iostream>#include<cstdio>#define N 10005using namespace std;double n,f[N],g[N];int main(){scanf("%lf",&n);for( int i = n-1; i >= 0; i-- ) f[i] = f[i+1]+n/(n-i);for( int i = n-1; i >= 0; i-- ) g[i] = g[i+1]+f[i+1]+(n*i)/((n-i)*n)*f[i]+n/(n-i);printf("%.2lf",g[0]); return 0;}
阅读全文
0 0
- 【BZOJ1426】收集邮票【期望DP】
- [bzoj1426]收集邮票 期望DP
- 【BZOJ1426】收集邮票 期望DP
- 【期望Dp】【bzoj1426】: 收集邮票
- bzoj1426 [收集邮票] 期望概率DP进阶
- bzoj1426 收集邮票(递推+概率期望)
- BZOJ1426 收集邮票
- bzoj1426收集邮票
- bzoj1426 收集邮票
- 【BZOJ1426】收集邮票 概率DP 论文题 推公式题
- [BZOJ 1426]收集邮票:期望DP
- BZOJ 1426: 收集邮票 期望DP
- bzoj 1426 收集邮票 期望dp
- 【bzoj 1426】收集邮票(期望DP)
- BZOJ 1426 收集邮票 期望dp
- BZOJ 1426: 收集邮票 期望DP,数学推导
- BZOJ 1426: 收集邮票 期望
- 概率DP 收集邮票
- Gym
- Oracle 使用sys用户登录报insufficient privileges权限不足
- h5移动前段的udp通信及数据包相应格式的编码转换
- uva-10815-Andy's First Dictionary-stl-set
- 2014广州亚洲现场赛/HDU 5131 Song Jiang's rank list(水题)
- [bzoj1426]收集邮票 期望DP
- Makefile经典教程(掌握这些足够)
- ACM 对拍
- java类加载的过程
- 孝感蛋糕
- Codeforces 834(426 Div.2) C.The Meaningless Game
- 一个能将给定非负整数数组中的数字排列成最大数字的函数(数组元素长度随机)
- sublime如何用正则选择用逗号分隔的几段并且替换修改
- EditText两个数字自动加空格