hdu 5570(数学期望)
题目链接: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(数学期望)相关推荐
- hdu 5419(数学期望)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5419 题解: 首先分母是C(m,3),考虑如何求出分子 考虑数学期望的独立性,我们首先可以用线性的时间 ...
- HDU - 4586 数学期望
题意 有一个骰子有n个面,掷到每一个面的概率是相等的,每一个面上都有相应的钱数.其中当你掷到某些面 一共m个面之一时,你有多掷一次的机会.问最后所得钱数的期望. 分析 数学期望是什么 数学期望就是一种 ...
- hdu 5481(数学期望+区间合并)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5481 题解: 实际上求的是所有子集的并集长度之和. 把坐标离散化之后,可以单独考虑每一段区间在并集内部 ...
- HDU 4808 数学 期望 积分
HDU 4808 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4808 题意: 在一个多维空间中,一个人从原点迈出一步,这步最多R那么长.问其中一维 ...
- 解题报告(一)F、(2018 ACM - ICPC shenyang I)Distance Between Sweethearts(数学期望 + 乘法原理 + FWT)(4.5)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- 随机变量的数字特征(数学期望,方差,协方差与相关系数)
戳这里:概率论思维导图 !!! 数学期望 离散型随机变量的数学期望 (这里要求级数绝对收敛,若不绝对收敛,则E(X)不存在) 如果有绝对收敛,则有 ,其中 连续型随机变量的数学期望 (这里要求绝对收敛 ...
- R语言:求二维变量数学期望
想做一个二维变量数学期望实验, 查看若干资料终于找到方法 先看这篇文章熟悉一下R的函数 http://www.cyclismo.org/tutorial/R/tables.html 构造数据 通过下面 ...
- HDU 4405 概率期望DP
有 0到 n 个格子.掷骰子走路,求出到终点的数学期望,有飞行的路线. dp[i] 存储在i位置走到终点的期望. 转移方程dp[i]=(dp[i+1] ----> dp[i+6])/6+1; 有 ...
- 概率论-2.2 随机变量的数学期望(重点:随机变量X的期望)
分布有关的特征数:均值,方差,分位数等 期望的定义: 设离散随机变量X的分布列为pi=p(xi)=P(X=xi),i=1,2,-,n 若Sum(| xi |*p(xi))收敛(等价于Sum( xi * ...
最新文章
- C++ 获得指定路径文件的“修改日期”
- golang 随机数 math/rand包 crypto/rand包
- MySQL中的char和varchar类型
- a extends b java_(class B extends A) 怎么解释?A是上一个类名
- java获取gbk文件名 linux_Java读取linux系统中文文件名时候乱码,并显示文件不存在...
- 静态链接库LIB和动态链接库DLL的区别 创建和示例
- 四个程序员恋爱必学的聊天知识点!
- SAP销售订单状态修改(审核) 计划行自动产生需求,产生MD04需求
- [转]微擎应用笔记3--manifest.xml文件使用说明
- 如何修改apache 2最大连接数
- 从你王者荣耀爱玩的英雄类型,我就知道你关注哪些技术领域!
- Sketch中文版教程,已加星标的更新如何使用?什么是Sketch星标功能?
- java简历项目经验大全(java商城项目经验简历)
- 《数据结构》线性表——链式存储结构
- 搭建智慧农业物联网云平台——基于阿里云物联网平台构建
- 随笔-自控概率的大转盘抽奖
- Unity3d之表情动画--眨眼
- 机器学习四 数据的差异性
- Oracle SQL 內置函數大全
- 200卡拨号上网设置