bzoj 1426:收集邮票 求平方的期望

  显然如果收集了k天,ans=k*(k+1)/2=(k^2+k)/2.那么现在要求的就是这个东西的期望。

  设f[i]表示已有i张邮票,收集到n张的期望次数,g[i]表示已有i张邮票,收集到n张的次数的平方的期望。

  显然i这个点有 $\frac{i}{n}$ 的概率走自环,有 $\frac{n-i}{n}$ 的概率走到i+1这个点。

  SO $$f[i]=(\frac{i}{n})\times(f[i]+1)+(\frac{n-i}{n})\times(f[i+1]+1)$$

  以前一直不懂平方的期望是怎么求的,今天终于证了一发。$$E((x+1)^2)=\sum_{i=0}^\infty P(x)*((x+1)^2)$$

  因为P后边的那个式子是一个具体的值所以可以拆开。

  $$E((x+1)^2)=\sum_{i=0}^\infty P(x)*((x+1)^2)=\sum_{i=0}^\infty P(x)*(x^2+2x+1)=\sum_{i=0}^\infty P(x)*(x^2)+2\times\sum_{i=0}^\infty P(x)*(x)+1=E[x^2]+2E[x]+1$$

  其中倒数第二步是根据期望的线性可加性得来。

  这样x^2的期望就可以由(x-1)^2的期望推来。

  所以g[i]和f[i]同理:$$g[i]=(\frac{i}{n})\times(g[i]+2\times f[i]+1)+(\frac{n-i}{n})\times(g[i+1]+2*f[i+1]+1)$$

  最后化简一下递推就行了。

  

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<iostream>
 5 #define N 100005
 6 using namespace std;
 7 double f[N],g[N];
 8 int main()
 9 {
10     int n;
11     scanf("%d",&n);
12     f[n]=0;g[n]=0;
13     for(int i=n-1;i>=0;i--)
14     {
15         f[i]=f[i+1]+(double)n/(n-i);
16         g[i]=g[i+1]+2.0*f[i+1]+2.0*i/(n-i)*f[i]+1.0*n/(n-i);
17     }
18     printf("%.2lf\n",(g[0]+f[0])/2);
19     return 0;
20 }

 

时间: 2024-12-23 11:46:19

bzoj 1426:收集邮票 求平方的期望的相关文章

bzoj 1426: 收集邮票【期望dp】

我太菜了,看的hzwer的blog才懂 大概是设f[i]表示已经拥有了i张邮票后期望还要买的邮票数,这个转移比较简单是f[i]=f[i](i/n)+f[i+1]((n-i)/n)+1 然后设g[i]为还需要的钱,可以把转移看做每张票都比前面的贵1元,就是g[i]=((n-i)/n)(g[i+1]+f[i+1])+(i/n)(g[i]+f[i])+1 #include<iostream> #include<cstdio> using namespace std; const int

BZOJ 1426 收集邮票 ——概率DP

$f(i)$表示现在有$i$张,买到$n$张的期望 所以$f(i)=f(i+1)+\frac {n}{n-i}$ 费用提前计算,每张邮票看做一元,然后使后面每一张加1元 $g(i)$表示当前为$i$张期望到$n$张时花掉的钱. 那么$g(i)=g(i+1)+f(i+1)+\frac{i}{n-i}f(i)+\frac{n}{n-i}$ 递推即可 #include <cstdio> #include <cstring> #include <iostream> #inclu

1426: 收集邮票

1426: 收集邮票 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 334  Solved: 269[Submit][Status][Discuss] Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所以皮皮购买第k张邮票需要支付k元钱. 现在皮皮手中没有邮票,皮皮想知道自己得到所有种类

【BZOJ】1426: 收集邮票 期望DP

[题意]有n种不同的邮票,第i次可以花i元等概率购买到一种邮票,求集齐n种邮票的期望代价.n<=10^4. [算法]期望DP [题解]首先设g[i]表示已拥有i张邮票集齐的期望购买次数,根据全期望公式,可以依赖于买到已集和未集邮票的情况: $$g[i]=\frac{i}{n}*g[i]+\frac{n-i}{n}*g[i+1]+1$$ 当然最后记得+1,然后移项解方程. 设f[i]表示已拥有i张邮票及其的期望代价,会发现因为是倒推,所以代价的问题变得很麻烦. 我们将代价倒置,假设购买k次,那么第

BZOJ 1426--收集邮票(概率与期望&amp;DP)

1426: 收集邮票 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 504  Solved: 417[Submit][Status][Discuss] Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所以皮皮购买第k张邮票需要支付k元钱. 现在皮皮手中没有邮票,皮皮想知道自己得到所有种类

【BZOJ-1426】收集邮票 概率与期望DP

1426: 收集邮票 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 261  Solved: 209[Submit][Status][Discuss] Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所以皮皮购买第k张邮票需要支付k元钱. 现在皮皮手中没有邮票,皮皮想知道自己得到所有种类

BZOJ1426: 收集邮票

1426: 收集邮票 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 258  Solved: 206[Submit][Status][Discuss] Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所以皮皮购买第k张邮票需要支付k元钱. 现在皮皮手中没有邮票,皮皮想知道自己得到所有种类

【BZOJ1426】收集邮票 期望

[BZOJ1426]收集邮票 Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所以皮皮购买第k张邮票需要支付k元钱. 现在皮皮手中没有邮票,皮皮想知道自己得到所有种类的邮票需要花费的钱数目的期望. Input 一行,一个数字N N<=10000 Output 要付出多少钱. 保留二位小数 Sample Input 3 Sample O

●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+..., 以及这个随机变量的平方的期