题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5570

【分析】

用A[i][j]表示第i个球为颜色j的概率
用c[j]表示颜色为j的球的个数
用E[x]表示式子x的期望,显然有E[X[i][j]]=A[i][j]*1+(1-A[i][j])*0=A[i][j]
用P[x]表示事件x发生的概率
题目所要求的是E[c[1]^2 +c[2]^2 +c[3]^2+...+c[m]^2]
按照期望的线性相加特性,题目所求的就是∑(j=1~m)E[c[j]^2]=E[c[1]^2]+E[c[2]^2]+...+E[c[m]^2];

一上来就研究概率,思路很难入手,难度会大一点。
于是我们不妨对于一个单独的状态(就是每个小球的颜色都确定)做研究——
用X[i][j]表示第i个球是否为第j种颜色,如果是,X[i][j]为1;否则,X[i][j]为0。
那么,c[j]=X[1][j]+X[2][j]+...+X[n][j].
回到∑(j=1~m)E[c[j]^2],它便可以写成——
=∑(j=1~m)E[(X[1][j]+X[2][j]+...+X[n][j])^2]
对于元素个数的平方,如何考虑其叠加性质,从贡献上,通过加法来简化问题?
元素个数的平方,等于元素的pair数(pair自然也包括[自身,自身]这一个)。
于是,上式又可以化为——
=∑(for j=1~m--for p=1~n--for q=1~n)E[ X[p][j]*X[q][j] ]

我们上面研究的某一个状态下的答案。然而我们还需要把其转化为概率来思考。
然而,在尝试化简的时候,我们注意点:E[X[p][j] * X[q][j]](p!=q)和 E[X[p][j]* X[p][j]] 是不一样的
因为对于E[X[p][j] * X[q][j]]来说,并结合上面确定的E[X[i][j]]=A[i][j]——
如果p!=q,那么这两个随机变量互相独立=E[X[p][j]] * E[X[q][j]] =A[p][j]*A[q][j]
如果p==q,那么E[ X[p][j]*X[p][j] ]=E[X[p][j]]=A[p][j]

于是,对于这道题的答案,式子先变成了——
∑(for j=1~m)
{
∑(for p=1~n)
{
∑(for q=1~n&&q!=p){A[p][j]*A[q][j]}
+A[p][j]
}
}

再化简一下,最后的式子就是——
∑(for j=1~m)
{
( ∑(for i=1~n)A[i][j] )^2
-∑(for i=1~n)A[i][j]^2 //这个是( ∑(for i=1~n)A[i][j] )^2中多算的量,减掉。
+∑(for i=1~n)A[i][j] //这个是真正应该算入的量,加上去。
}
我们发现,这个复杂度确实只有O(nm),这道题就做完啦~~

【时间复杂度&&优化】

O(nm)

参考博客:http://blog.csdn.net/snowy_smile/article/details/50032485

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;const int maxn = 1005;
int n,m;
double p[maxn][maxn];int main()
{while(scanf("%d%d",&n,&m)!=EOF){for(int i = 1; i <= n; i++){double sum = 0;for(int j = 1; j <= m; j++){scanf("%lf",&p[i][j]);sum += p[i][j];}for(int j = 1; j <= m; j++)p[i][j] = p[i][j] / sum;}double ans = 0;for(int i = 1; i <= m; i++){double tmp = 0;for(int j = 1; j <= n; j++)tmp += p[j][i];tmp = tmp * tmp;for(int j = 1; j <= n; j++)tmp -= p[j][i] * p[j][i];for(int j = 1; j <= n; j++)tmp += p[j][i];ans += tmp;}printf("%.2f\n",ans);}return 0;
}

hdu 5570(数学期望)相关推荐

  1. hdu 5419(数学期望)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5419 题解: 首先分母是C(m,3),考虑如何求出分子 考虑数学期望的独立性,我们首先可以用线性的时间 ...

  2. HDU - 4586 数学期望

    题意 有一个骰子有n个面,掷到每一个面的概率是相等的,每一个面上都有相应的钱数.其中当你掷到某些面 一共m个面之一时,你有多掷一次的机会.问最后所得钱数的期望. 分析 数学期望是什么 数学期望就是一种 ...

  3. hdu 5481(数学期望+区间合并)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5481 题解: 实际上求的是所有子集的并集长度之和. 把坐标离散化之后,可以单独考虑每一段区间在并集内部 ...

  4. HDU 4808 数学 期望 积分

    HDU 4808 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4808 题意: 在一个多维空间中,一个人从原点迈出一步,这步最多R那么长.问其中一维 ...

  5. 解题报告(一)F、(2018 ACM - ICPC shenyang I)Distance Between Sweethearts(数学期望 + 乘法原理 + FWT)(4.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  6. 随机变量的数字特征(数学期望,方差,协方差与相关系数)

    戳这里:概率论思维导图 !!! 数学期望 离散型随机变量的数学期望 (这里要求级数绝对收敛,若不绝对收敛,则E(X)不存在) 如果有绝对收敛,则有 ,其中 连续型随机变量的数学期望 (这里要求绝对收敛 ...

  7. R语言:求二维变量数学期望

    想做一个二维变量数学期望实验, 查看若干资料终于找到方法 先看这篇文章熟悉一下R的函数 http://www.cyclismo.org/tutorial/R/tables.html 构造数据 通过下面 ...

  8. HDU 4405 概率期望DP

    有 0到 n 个格子.掷骰子走路,求出到终点的数学期望,有飞行的路线. dp[i] 存储在i位置走到终点的期望. 转移方程dp[i]=(dp[i+1] ----> dp[i+6])/6+1; 有 ...

  9. 概率论-2.2 随机变量的数学期望(重点:随机变量X的期望)

    分布有关的特征数:均值,方差,分位数等 期望的定义: 设离散随机变量X的分布列为pi=p(xi)=P(X=xi),i=1,2,-,n 若Sum(| xi |*p(xi))收敛(等价于Sum( xi * ...

最新文章

  1. C++ 获得指定路径文件的“修改日期”
  2. golang 随机数 math/rand包 crypto/rand包
  3. MySQL中的char和varchar类型
  4. a extends b java_(class B extends A) 怎么解释?A是上一个类名
  5. java获取gbk文件名 linux_Java读取linux系统中文文件名时候乱码,并显示文件不存在...
  6. 静态链接库LIB和动态链接库DLL的区别 创建和示例
  7. 四个程序员恋爱必学的聊天知识点!
  8. SAP销售订单状态修改(审核) 计划行自动产生需求,产生MD04需求
  9. [转]微擎应用笔记3--manifest.xml文件使用说明
  10. 如何修改apache 2最大连接数
  11. 从你王者荣耀爱玩的英雄类型,我就知道你关注哪些技术领域!
  12. Sketch中文版教程,已加星标的更新如何使用?什么是Sketch星标功能?
  13. java简历项目经验大全(java商城项目经验简历)
  14. 《数据结构》线性表——链式存储结构
  15. 搭建智慧农业物联网云平台——基于阿里云物联网平台构建
  16. 随笔-自控概率的大转盘抽奖
  17. Unity3d之表情动画--眨眼
  18. 机器学习四 数据的差异性
  19. Oracle SQL 內置函數大全
  20. 200卡拨号上网设置

热门文章

  1. java filter 注解_Spring常用注解及自定义Filter的实现
  2. Spring Boot Jpa多数据源配置
  3. IT 人士如何避免中年危机?
  4. MySQL INSERT INTO...ON DUPLICATE KEY UPDATE的使用
  5. Ubuntu免安装配置MySQL
  6. CodeIgniter笔记4
  7. web工作流管理系统开发之十九 工作流系统的事务处理
  8. 手机关机后,就没有定位信息了
  9. 静态函数造成GC的原因
  10. C# 与 LUA 的经验对比