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))$的。

  • 相关阅读:
    发布google在线翻译程序(附源码)
    基于MVP架构设计ASP.Net的应用研究
    发布最新C#3.5开发的ReSharper4.0 for VS2005/2008 注册机
    基于元数据驱动模型架构在ASP.Net的应用研究
    Silverlight整合Asp.net AjAX的技术应用
    在WCF中的异常处理方法
    Windows Server 2008 的十四大最新功能特性技术总结
    微软Asp.Net架构与项目团队管理建设模型分析
    在Biztalk应用中调用程序集的方法
    Visual Studio 2008和ASP.NET 3.5的最新技术探索
  • 原文地址:https://www.cnblogs.com/gromah/p/5765921.html
Copyright © 2011-2022 走看看