[bzoj1426]收集邮票

Posted pywbktda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[bzoj1426]收集邮票相关的知识,希望对你有一定的参考价值。

第i次购物的花费是i元,那么意味着可以理解为消费要加上次数,因此预处理抽出i张牌后,抽出剩余n-i张牌的期望次数,设g[i]表示这个期望,那么有方程$g[i]=((n-i)*g[i+1]+i*g[i])/n+1$,化简得到$g[i]=g[i+1]+n/(n-i)$
然后即可求出f[i]表示抽出i张牌后还需要的期望价格(假设当前是第一轮),那么同理也可以得到$f[i]=f[i+1]+g[i+1]+i*g[i]/(n-i)+n/(n-i)$,最终f[1]即为答案

技术图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n;
 4 double g[10005],f[10005];
 5 int main(){
 6     scanf("%d",&n);
 7     for(int i=n-1;i>=0;i--)g[i]=g[i+1]+1.0*n/(n-i);
 8     for(int i=n-1;i>=0;i--)f[i]=f[i+1]+g[i+1]+i*g[i]/(n-i)+1.0*n/(n-i);
 9     printf("%.2f",f[0]);
10 }
View Code

 

以上是关于[bzoj1426]收集邮票的主要内容,如果未能解决你的问题,请参考以下文章

Bzoj 1426 收集邮票

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

Bzoj1426 收集邮票

bzoj1426收集邮票

bzoj1426 收集邮票

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