zoukankan      html  css  js  c++  java
  • 【题解】P4550 收集邮票(概率期望,平方期望)

    6月份做的这道题,今天再看,发现有些地方的理解是错的,修改了一下发了上来。

    Des

    (n) 种不同的邮票,皮皮想收集所有种类的邮票。唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是 (n) 种邮票中的哪一种是等概率的,概率均为 (1/n)。但是由于凡凡也很喜欢邮票,所以皮皮购买第 (k) 次邮票需要支付 (k) 元钱。

    现在皮皮手中没有邮票,皮皮想知道自己得到所有种类的邮票需要花费的钱数目的期望。

    ( exttt{Data Range:})

    (Nle 10^4)

    Sol

    (f(k)) 表示买到 (k) 张不同邮票的期望次数,(f(k)=sum p_jn_j),则费用 (g(k))

    [sum p_jfrac {(1+n_j)(n_j)}{2}=frac{sum p_jn_j+sum p_jn_j^2}{2}=frac{f(k^2)+f(k)}{2} ]

    所以需要维护 (f(k^2))(f(k))

    (f(k-1)=sum q_jm_j)(f(k)=sum h_qs_q),则

    [egin{align*} f(k)&=frac{n-k+1}nsum q_j(m_j+1)+frac{k-1}n(sum h_q(s_q+1))\ &=frac{n-k+1}n(f(k-1)+1)+frac{k-1}n(f(k)+1)\ &=f(k-1)+frac{n}{n-k+1}, end{align*} ]

    同理,

    [egin{align*} f(k^2)&=frac{n-k+1}{n}sum q_j(m_j+1)^2+frac{k-1}{n}sum h_q(s_q+1)^2\ &=frac{n-k+1}{n}(f(k-1)^2+2f(k-1)+1)+frac{k-1}{n}(f(k^2)+2f(k)+1)\ &=f((k-1)^2)+2f(k-1)+1+frac{k-1}{n-k+1}(2f(k)+1). end{align*} ]

    这样就比较轻松的解决了这个问题,关键在于不能将期望 (E(k)) 看做一个整体考虑,而应该写成定义式再做运算。另外就是期望的平方不一定等于平方的期望。

    My code

    const int N = 1e4 + 5;
    int n;
    double f[N], f2[N];
    
    int main() {
    	#ifndef HRJ
    	ios::sync_with_stdio(false); cin.tie(0);
    	#endif
    	cin >> n;
    	for(int i = 1; i <= n; i++) {
    		f[i] = f[i - 1] + double(n) / (n - i + 1);
    		f2[i] = f2[i - 1] + 2 * f[i - 1] + 1 + double(i - 1) / (n - i + 1) * (2 * f[i] + 1);
    	}
    	cout << fixed << setprecision(2) << (f[n] + f2[n]) / 2;
    
        return 0;
    }
    
  • 相关阅读:
    python信息收集(二)
    python信息收集(一)
    'utf-8' codec can't decode byte 0xd3 in position 0: invalid continuation byte
    Loadruner 之 controller 负载生成器与场景运行——性能测试
    chromedriver 在pycharm 中的使用
    selenium 安装
    在Linux 中搭建 Mysql
    前端攻略
    2020-5-22 第二期——拖延症
    2020-5-15 第一期
  • 原文地址:https://www.cnblogs.com/huaruoji/p/p4550.html
Copyright © 2011-2022 走看看