51nod 1098 最小方差 排序+前缀和+期望方差公式
题目:
题目要我们,在m个数中,选取n个数,求出这n个数的方差,求方差的最小值。
1.我们知道,方差是描述稳定程度的,所以肯定是着n个数越密集,方差越小。
所以我们给这m个数排个序,从连续的n个数中找。
2.方差公式D(x^2) = E(x^2)- E(x)^2;
E(x) = x*f(x) dx (从负无穷到正无穷积分)
E (x^2) = x^2*f(x) dx (从负无穷到正无穷积分)
3.对于这道题,相当于每个数的权值相同,也就是f(x)相同,都等于1/n。(可以理解f(x)表示概率)
4.我们可以用前缀和来减少时间复杂度。
sum1[i]表示前 i 项的和,方便算出E(x)^2
sum2[i]表示前 i 项平方和 ,方便算出E(x^2)
当我们要算第 i 项到第 j 项共 j-i+1 项的方差的时候我们只用这样写:
ll k1 = sum1[j]-sum1[i-1]; // 第i项到第j项的和
double s1 = 1.0*k1/n*k1/n; // k1/n表示平均数E(x), s1表示E(x)^2
ll k2 = sum2[j]-sum2[i-1]; // 第i项到第j项的平方和
double s2 = 1.0*k2/n; // s2 和 k2/n 表示E(x^2)
第 i 项到第 j 项的方差就等于 s2-s1 了。
5.我们可以得到大致代码,当然现在就可以直接开始敲了,如果看懂了的话。
double mn = 2e18;for(int i = n;i <= m; i++){ll k1 = sum1[i]-sum1[i-n];double s1 = 1.0*k1/n*k1/n;ll k2 = sum2[i]-sum2[i-n];double s2 = 1.0*k2/n;mn = min(s2-s1,mn);}
6.我们要注意一下精度问题,我的做法是给mn += 1e-8。
代码:
#include <bits\stdc++.h>
using namespace std;
typedef long long ll;int a[10010];
ll sum1[10010]; //sum1[i]表示前i项和
ll sum2[10010]; //sum2[i]表示前i项平方和
int main() {ll m,n;cin >> m >> n;for(int i = 1;i <= m; i++){cin >> a[i];}sort(a+1,a+1+m); // 排个序,让数字变得紧凑 for(int i = 1;i <= m; i++){sum1[i] = sum1[i-1] + a[i];sum2[i] = sum2[i-1] + a[i]*a[i];}double mn = 2e18; //存最小的方差 for(int i = n;i <= m; i++){ll k1 = sum1[i]-sum1[i-n]; // 第 i-n+1 项到第 i项共 n 项的和。 double s1 = 1.0*k1/n*k1/n; // k1/n表示平均数E(x),s1表示 E(x)^2 ll k2 = sum2[i]-sum2[i-n]; // 第 i-n+1 项到第 i项共 n 项的和。double s2 = 1.0*k2/n; // k2/n表示E(x^2) mn = min(s2-s1,mn); }// 如果不加这个可能会出问题,因为cout double用的是科学记数法,需要消除误差。mn += 1e-8; cout << (ll)(mn*n) << endl;return 0;
}
// writen by zhangjiuding
51nod 1098 最小方差 排序+前缀和+期望方差公式相关推荐
- 几何分布的期望和方差公式推导_数学期望、方差、协方差
概论: 一维随机变量期望与方差 二维随机变量期望与方差 协方差 1.一维随机变量期望与方差: 公式: 离散型: E(X)=∑i=1->nXiPi Y=g(x) E(Y)=∑i=1->ng( ...
- 期望方差和贝叶斯概率
期望(expectation)就是平均权重,用E(f)表示,连续型的期望如下: 给出有限的 N 个点期望可以如下表示: 当 N趋向于无穷大的时候上式会非常准确,上式在抽样方法里面会广泛使用. 多个变量 ...
- 概率统计极简入门:通俗理解微积分/期望方差/正态分布前世今生(23修订版)
原标题:数据挖掘中所需的概率论与数理统计知识(12年首次发布,23年重编公式且反复改进) 修订背景 本文初稿发布于12年年底,十年后的22年底/23年初ChatGPT大火,在写ChatGPT通俗笔记的 ...
- 【51nod】 最小约数 V2
[51nod] 最小约数 V2 题目 解题思路 用vector,防止爆数组 先将所有数排序,满足输出要从小到大 然后求出每个数除1外的最小约数 最后输出答案 代码 #include<algori ...
- java算法----排序----(6)希尔排序(最小增量排序)
1 package log; 2 3 public class Test4 { 4 5 /** 6 * java算法---希尔排序(最小增量排序) 7 * 8 * @param args 9 */ 1 ...
- 最小成本排序:两种情况
最小成本排序:两个数交换,这两个数相加,一组数全部交换成有序之后,累加和就是成本. 如何求出最小的成本,有一点难度,主要在于有两种情况的分析,一种是每个元素交换到正确位置(会形成一些闭合的圆),进行计 ...
- 利用级数求和推导泊松分布的期望方差
利用级数求和推导泊松分布的期望方差 @(概率论) 闲来无事,动手推导一个常见的泊松分布的表达式相关的数字特征: EX,DX.并通过这个过程思考级数求和的注意事项. 回顾泊松分布: 设变量X服从λ\la ...
- 二项分布的期望方差证明
二项分布的期望方差证明 P(X=k)=(nk)pkqn−k,k=0,1,2,..,n,q=1−pEX=∑k=0nk(nk)pkqn−k=∑k=1nk(nk)pkqn−k=∑k=1nkn!k!(n−k) ...
- 分段函数的期望和方差_导数排列组合期望方差.doc
每日练习 导数大题 证明 期望方差 1.已知函数,. (1)当时,求函数的最大值: (2)若,且对任意的恒成立,求实数的取值范围. 2.已知函数f(x)=,g(x)=ex+m,其中e=2.718-. ...
最新文章
- 用Transformer定义所有AI模型!特斯拉AI总监Karpathy发推感叹AI融合趋势
- 计算多卷积核神经网络迭代次数---分类0,6
- php对话框制作,js制作一个简单的对话框教程
- SEO:如何做好软文推广
- Visual Studio 2017 RC3支持.NET Core,延迟对Python的支持
- 激光炸弹(二维前缀和问题)
- 《金色梦乡》金句摘抄(二)
- 新唐M0 KEIL环境搭建,找不到device不识别,关键:Nu-Link_Keil_Driver
- 绕开登录进行爬虫_爬虫小偏方:绕开登陆和访问频率控制
- 5-6pooling层
- Windows远程访问Linux (Ubuntu)服务器
- ce标志cad_CAD标识
- 1446. 连续字符【我亦无他唯手熟尔】
- 最近美团前端面试题目整理
- 3dmax室内灯光强度一般打多少才合适
- 参数服务器——分布式机器学习的新杀器
- Java面试宝典最新整理 下篇(持续更新中)
- 即时通讯(四)---初始化融云
- 商品国标码的SQLSERVER SQL 校验位 实现:
- 软考复习笔记、项目论证与评估与项目招投标流程及管理,建议收藏
热门文章
- 每日程序C语言49-猴子分桃子问题
- java如何调用网页_如何使用网页开发自己的app,在网页中的按钮与自己的java代码绑定来实现打电话即javascript代码调用java代码,和java代码来调用javascript代码...
- 刷圈兔下载_刷圈兔app
- python 语音识别机器人控制系统_python人脸识别+语音识别 的监控系统
- SQLserver查看某个视图的创建语句
- python爬虫(4)--Cookie的使用
- 理解JavaScript的运行
- HTML5 Audio标签API整理(三)
- solaris 源代码
- [置顶]信息发布系统 Jquery+MVC架构开发(4)Model 层