2018/7/31--zznu-oj-问题 G: 方差 普拉斯--【两重暴力循环求方差即可!】
问题 G: 方差 普拉斯
时间限制: 1 Sec 内存限制: 128 MB
提交: 94 解决: 17
[提交] [状态] [讨论版] [命题人:admin]
题目描述 方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。在许多实际问题中,研究方差即偏离程度有着重要意义。
若x1,x2,x3......xn的平均数为k,则方差s^ = /n * [(x1-k)^+(x2-k)^+.......+(xn-k)^] 。
给出M个数,从中找出N个数,使这N个数方差最小。
输入 第1行:2个数M,N,(M > N, M <= )
第2 - M + 1行:M个数的具体值( <= Xi <= )
输出 输出最小方差 * N的整数部分。
样例输入 样例输出
大致思路:
1、求方差,暴力即可!暴力下来也只有两重for循环!不会超时!
2、设下标从x1--x2的n个数的方差为s1,平均数k1,下标x1+1—x2+1 的方差为s2,平均数为k2, 前后两者有一点联系,就是平均数会涉及到一些重复计算,分别设为k1和k2,k2=k1-x1/n+(x2+1)/n,省去了一些计算复杂度!但是,方差s1和s2并不能直接像类似于k1和k2那样直接转化!那么s2需要老老实实地再计算一遍!(我看着样例,直接得出了s1得到s2的式子!WA了一次!)因此时间复杂度不会因为一点k1得到k2的优化而发生变化!毕竟乘法时间复杂更大!
3、记得这个样本序列需要进行排序,升序排序一遍即可!不排序我WA了!
4、别被题面吓住了!尤其是开篇的两道题目造成的深深的心理阴影,后面的题目其实才简单呢!!!多做题,才能克服自己内心深处的恐惧!
5、会不会超double类型呢!貌似不会!假设(x1-k)等于1e4,那么平方会就是1e8,并且还有N个数,那个总的和就是1e12次方,基本会超过double了!不放心的话,可以在求xi的时候把(xi-k)*(xi-k)/N 调整成 (xi-k)/N*(xi-k),这样就肯定没问题了。
题解:
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<vector>
#include<algorithm>
#define ll long long
using namespace std;
#define N 10000
#define ll long long
double a[N+]; int main()
{
int m,n;
while(scanf("%d%d",&m,&n)!=EOF){
for(int i=;i<=m;i++)
scanf("%lf",&a[i]);
sort(a+,a++m);
// for(int i=1;i<=m;i++)
// printf("*%lf ",a[i]); a[]=;
double sum=,k=,s2=,ans=999999999.9;
for(int i=;i<n;i++)
sum+=a[i];
for(int i=n;i<=m;i++){
sum=sum+a[i]-a[i-n];
k=sum/n;
s2=;
for(int j=i;j>=i-n+;j--)
s2=s2+(a[j]-k)/(1.0*n)*(a[j]-k);
ans=min(ans,s2);
} printf("%lld\n",(ll)(ans*1.0*n+1e-)); } return ;
}
(两重for循环暴力就AC了!)
2018/7/31--zznu-oj-问题 G: 方差 普拉斯--【两重暴力循环求方差即可!】的更多相关文章
- ZZNU 2125:A + B 普拉斯(傻逼题+大数加法)
2125: A + B 普拉斯 时间限制: 1 Sec 内存限制: 128 MB 提交: 94 解决: 28 [提交] [状态] [讨论版] [命题人:admin] 题目描述 "别人总说 ...
- ZZNU - OJ - 2080 : A+B or A-B【暴力枚举】
2080 : A+B or A-B(点击左侧标题进入zznu原题页面) 时间限制:1 Sec 内存限制:0 MiB提交:8 答案正确:3 提交 状态 讨论区 题目描述 Give you three s ...
- matlab求方差,均值,均方差,协方差的函数
1. 均值 数学定义: Matlab函数:mean >>X=[1,2,3] >>mean(X)=2 如果X是一个矩阵,则其均值是一个向量组.mean(X,1)为列向量的均值,m ...
- 【题解】歌唱王国(概率生成函数+KMP)+伦讲的求方差
[题解]歌唱王国(概率生成函数+KMP)+伦讲的求方差 生成函数的本质是什么呀!为什么和It-st一样神 设\(f_i\)表示填了\(i\)个时候停下来的概率,\(g_i\)是填了\(i\)个的时候不 ...
- 网络流板子/费用流板子 2018南京I题+2016青岛G题
2018南京I题: dinic,链式前向星,数组队列,当前弧优化,不memset全部数组,抛弃满流点,bfs只找一条增广路,每次多路增广 #include <bits/stdc++.h> ...
- 2018/03/31 每日一个Linux命令 之 date
date 命令主要用于查看和修改时间和时区 -- 这里主要学习基本的查看和设置时间和时区的方法. 直接显示日期 date '+%D' 效果 vagrant@hong:~$ date '+%D' 03/ ...
- OJ上 G++ 与 C++ 的区别
1.输出double类型时,如果采用G++提交,scanf采用%lf,prinf采用%f,否则会报错 2.使用GCC/G++的提醒: 对于64位整数, long long int 和 __int64 ...
- oj 中G++和C++区别(转)
1.输出double类型时,如果采用G++提交,scanf采用%lf,prinf采用%f,否则会报错 2.使用GCC/G++的提醒: 对于64位整数, long long int 和 __int64 ...
- 2018.12.31 bzoj4001: [TJOI2015]概率论(生成函数)
传送门 生成函数好题. 题意简述:求nnn个点的树的叶子数期望值. 思路: 考虑fnf_nfn表示nnn个节点的树的数量. 所以有递推式f0=1,fn=∑i=0n−1fifn−1−i(n>0) ...
随机推荐
- php 获取文件mime类型的方法
php 获取文件mime类型的方法 使用fileinfo需要安装php_fileinfo扩展. 如已安装可以在extension_dir目录下找到php_fileinfo.dll(windows),f ...
- windows下图形学视觉基本库安装不完全指南
安装各种库东奔西走...... GLUT(英文全写:OpenGL Utility Toolkit)是一个处理OpenGL程式的工具库,负责处理和底层操作系统的呼叫以及I/O,并包括了以下常见的功能: ...
- 路由器01---k2刷Pandora
1.固件 固件(Firmware)就是写入EPROM(可擦写可编程只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序. 对于独立可操作的电子产品,固件一般指它的操作系统(“担任着一个数码产品 ...
- Java面试笔记整理4
一.Java内存溢出的产生原因和解决办法? java.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生该错误的原因大都出于以下原因:JVM内存过小.程序不严密,产 ...
- Thinking In Java 4th Chap7 复用类
复用代码的两种方法:组合和继承 组合方法:(新类中产生现有类的对象) 没什么好说的,就是调用别类的对象而已 值得一提的是一个特殊方法:toString()当需要一个String却只有对象时能够自动调用 ...
- 十二、使用PWM调整LCD背光亮度
和手机一样,开发板中也带有调整背光亮度的功能. 调整背光亮度依赖于PWM,它通过调节脉冲宽度来控制背光亮度,此方式需要使用PWM驱动.本章将对其进行讲解. 一.用户空间调整背光亮度 一般应用程序可以通 ...
- shell习题第21题:计算数字的个数
[题目要求] 计算文档a.txt中每一行出现数字的个数并且要计算一下整个文档中一共出现了几个数字 例如a.txt如下: sdhhyh776dbbgbfg dhhdffhhhs556644382 运行结 ...
- 部署java应用的几种方式
J2EE应用 该应用根目录下有好多文件夹和以jsp结尾的文件 部署时,需要在tomcat的conf目录下的server.xml文件中添加上<Context path="/" ...
- aliplay获取播放时长
<div id="player-con" class="frequency-pic"></div> <link rel=" ...
- (一)Activiti简介
一.概念 Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构 ...