zoukankan      html  css  js  c++  java
  • 一些经典的期望问题

    • 有$m$个和为$n$的非负整数,求这$m$个数的期望方差。

    考虑方差的式子:

        $$s^2=frac{1}{m} imessum_{i=1}^{m}(X_i - overline{X})^2 = frac{1}{m} imessum_{i=1}^{m}{X_i}^2-frac{n^2}{m^2}$$

    所以我们可以把问题转化为求期望平方和。有:

        $$sum_{i=1}^{m}{X_i}^2 = sum_{i=1}^{m}(X_i imes(X_i-1)+X_i) = n + 2 imessum_{i=1}^{m}inom{X_i}{2}$$

        考虑$sum_{i=1}^{m}inom{X_i}{2}$的组合意义。问题相当于给$n$个有标号的球,和$m$个有标号的盒子,每个球能放入任意一个盒子,问有多少对球在同一个箱子内。求期望的话,考虑每一对球$(i,j)$,显然$i,j$在同一个箱子内的概率为$frac{1}{m}$,然后有$inom{n}{2}$对球,那么$sum_{i=1}^{m}inom{X_i}{2}$ 的期望就是$frac{1}{m} imesinom{n}{2}$。带入,得:

        $$ E(s^2) = frac{1}{m} imes E(sum_{i=1}^{m}{X_i}^2) - frac{n^2}{m^2} = frac{n(n+m-1) - n^2}{m^2}=frac{n(m-1)}{m^2}$$

        至此,问题得解。

    • 给一棵树,随机选择一条路径,问路径的期望边权和/最大边权/边权位运算和/......

    先考虑边权和怎么做:给每个点$u$记录$Size_u$表示子树大小,那么对于点$u$到其父亲的边$e$会出现在$Size_u imes(n-Size_u)$条链中,所以其对答案的贡献就是$w_e imesfrac{Size_u imes(n-Size_u)}{inom{n}{2}}$,累加即可。

    最大边权也差不多,只不过要先给边按照边权排序,然后从小到大加边,用并查集维护当前联通块的大小。假设边$e$的两个端点为$u,v$,同时设加入边$e$时$u,v$所在联通块的大小分别为$Size_u,Size_v$,那么以这条边作为最大边权的链的数量为:$Size_u imes Size_v$,所以其对答案的贡献就是$w_e imesfrac{Size_u imes Size_v}{inom{n}{2}}$,累加即可。

    边权位运算和就有点小麻烦,这里给出本人的一个做法。可以选择用树分治来统计链的位运算和,然后把每一个位运算和的每一个二进制位分离开记贡献,此后便可算出每一个二进制位为1的概率,进而算出该位对于答案的贡献,最后累加贡献即可。复杂度是$O(n(log W+log n))$的。

  • 相关阅读:
    C++入门经典-例8.5-多重继承
    C++入门经典-例8.3-子类显示调用父类构造函数
    C++入门经典-例8.2-构造函数的访问顺序
    C++入门经典-类成员的可访问性,继承后的可访问性
    C++入门经典-例8.1-类的继承
    C++入门经典-例7.10-运算符的重载,重载加号运算符
    C++入门经典-例7.9-对象数组,批量化生产
    C++入门经典-例7.8-const对象,标准尺寸
    C++入门经典-例7.7-对象与复制,菌类的繁殖
    C++入门经典-例7.6-this指针,同一个类的不同对象数据
  • 原文地址:https://www.cnblogs.com/gromah/p/5765921.html
Copyright © 2011-2022 走看看