牛客网NOIP赛前集训营-提高组(第二场)A 方差
链接:https://www.nowcoder.com/acm/contest/173/A
来源:牛客网
题目描述
可以证明的是,如果序列元素均为整数,那么方差乘以 m^2 之后,得到的值一定是整数。
现在有一个长度为 N 的序列 a[1...N],对每个 i = 1~N,你需要计算,如果我们删除 a[i],剩下的 N-1 个元素的方差乘以 (N-1)^2 的值。
输入描述:
第一行一个整数 N。
接下来一行 N 个整数,第 i 个数表示 a[i]。
输出描述:
一行 N 个整数,第 i 个数表示删掉 a[i] 后,剩下元素的方差乘以 (N-1)^2 的值。
输入例子:
4
1 1 1 2
输出例子:
2 2 2 0
-->
备注:
对全部的测试数据,N <= 10^5, | a[i] | <= 10^4 * 30 分的数据,N <= 1000
* 30 分的数据,N <= 10^5, a[i] 只有 30 种不同的取值
* 40 分的数据,无特殊限制
对于题目给出的石子我们当然要化简了,答案要乘$(n-1)^2$不如提前乘进去,那么式子:
将n-1带入,n-1也就是公式中的m
$$\frac{1}{n-1} \sum_{i=1}^{n-1}(b_i-\overline{b})^2 \times (n-1)^2=(n-1)\times \sum_{i=1}^{n-1}(b_i-\overline{b})^2$$
下面我们继续处理这个式子:
首先我们都知道$(a-b)^2=a^2+b^2-2ab$
那么
$$
\begin{aligned}
(n-1)\sum_{i=1}^{n-1}(b_i-\overline{b})^2&=(n-1) \times\sum_{i=1}^{n-1}({b_i}^2+\overline{b}^2+2b_i \overline{b})\\
&=(n-1) \times \left( \sum_{i=1}^{n-1}{b_i}^2+\sum_{i=1}^{n-1} \overline{b}^2+\sum_{i=1}^{n-1}2b_i \overline{b} \right)\\
&=(n-1) \times \sum_{i=1}^{n-1}{b_i}^2+(n-1)\times \sum_{i=1}^{n-1} \overline{b}^2-(n-1)\times\sum_{i=1}^{n-1}2b_i \overline{b}\\
\text{因为}\overline{b}&=\frac{\sum_{i=1}^{n-1}b_i}{n-1}\\
&=(n-1) \times\sum_{i=1}^{n-1}{b_i}^2+(n-1)\times\overline{b}-(n-1)\times \sum_{i=1}^{n-1}{2b_i}-(n-1) \times \sum_{i=1}^{n-1}b_i\\
&=(n-1) \times \sum_{i=1}^{n-1}{b_i}^2-(\sum_{i=1}^{n-1})^2
\end{aligned}
$$
答案是每个数的平方和减去每个数和的平方
那么我们只需要记录两个前缀和对于每个数$O(1)$输出,总时间复杂度$O(n)$
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
#define LL long long
LL a[];
LL sum1[],sum2[],n;
// sum(bi^2-2bi*b+b^2)*(n-1)
int main()
{
scanf("%lld",&n);
for(int i=;i<=n;i++)
{
scanf("%lld",&a[i]);
sum1[i]=sum1[i-]+a[i]*a[i];
sum2[i]=sum2[i-]+a[i];
}
LL num1=(sum1[n]-sum1[])*(n-);
LL num2=sum2[n]-sum2[];
printf("%lld",num1-num2*num2);
for(int i=;i<=n;i++)
{
LL num1=(sum1[n]-sum1[i]+sum1[i-])*(n-);
LL num2=sum2[n]-sum2[i]+sum2[i-];
printf(" %lld",num1-num2*num2);
}
}
牛客网NOIP赛前集训营-提高组(第二场)A 方差的更多相关文章
- 牛客网NOIP赛前集训营-提高组(第四场)游记
牛客网NOIP赛前集训营-提高组(第四场)游记 动态点分治 题目大意: \(T(t\le10000)\)组询问,求\([l,r]\)中\(k(l,r,k<2^{63})\)的非负整数次幂的数的个 ...
- 牛客网NOIP赛前集训营-提高组(第四场)B区间
牛客网NOIP赛前集训营-提高组(第四场)B区间 题目描述 给出一个序列$ a_1 \dots a_n$. 定义一个区间 \([l,r]\) 是好的,当且仅当这个区间中存在一个 \(i\),使得 ...
- 牛客网NOIP赛前集训营-提高组(第四场)B题 区间
牛客网NOIP赛前集训营-提高组(第四场) 题目描述 给出一个序列 a1, ..., an. 定义一个区间 [l,r] 是好的,当且仅当这个区间中存在一个 i,使得 ai 恰好等于 al, al+1, ...
- 牛客网NOIP赛前集训营-普及组(第二场)和 牛客网NOIP赛前集训营-提高组(第二场)解题报告
目录 牛客网NOIP赛前集训营-普及组(第二场) A 你好诶加币 B 最后一次 C 选择颜色 D 合法括号序列 牛客网NOIP赛前集训营-提高组(第二场) A 方差 B 分糖果 C 集合划分 牛客网N ...
- 牛客网NOIP赛前集训营-提高组18/9/9 A-中位数
链接:https://www.nowcoder.com/acm/contest/172/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 牛客网NOIP赛前集训营-提高组(第八场)
染色 链接:https://ac.nowcoder.com/acm/contest/176/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言10 ...
- 牛客网NOIP赛前集训营 提高组(第七场)
中国式家长 2 链接:https://www.nowcoder.com/acm/contest/179/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K, ...
- [牛客网NOIP赛前集训营-提高组(第一场)]C.保护
链接:https://www.nowcoder.com/acm/contest/172/C来源:牛客网 题目描述 C国有n个城市,城市间通过一个树形结构形成一个连通图.城市编号为1到n,其中1号城市为 ...
- 牛客网NOIP赛前集训营-提高组(第一场)
牛客的这场比赛感觉真心不错!! 打得还是很过瘾的.水平也比较适合. T1:中位数: 题目描述 小N得到了一个非常神奇的序列A.这个序列长度为N,下标从1开始.A的一个子区间对应一个序列,可以由数对[l ...
随机推荐
- Android Studio:layout-sw600dp文件夹中创建activity_main.xml
1.右键res文件夹,新建Android resource directory文件夹 2.在resource type中选择layout 3.将Directory name命名为layout-sw6 ...
- POJ1700 【经典过河问题,贪心】
题意: n个人过河, 船每次只能坐两个人, 然后船载每个人过河的所需时间不同, 问最快的过河时间. 思路: 仅仅启发一下思维: 我相信很多人一下子的想法就会有,每次最快和那些慢的过去,然后让最快一直来 ...
- android 在一个应用中启动另一个应用
在程序开发过程当中,常遇到需要启动另一个应用程序的情况,比如在点击软件的一个按钮可以打开地图软件. 如果既有包名又有主类的名字,那就好 办了, 直接像下面就行: [html] Intent inte ...
- update cdh version ,but cdh use old conf ,problem solve
最近升级cdh版本,从4.5 升级到 5.0.0 beta-2 但是升级后,发现/etc/alternatives 路径下的软链接还是只想旧的4.5 版本,而且hadoop环境也是沿用4.5 的版本c ...
- NSA互联网公开情报收集指南:迷宫中的秘密·上
猫宁!!! 参考链接: https://www.nsa.gov/news-features/declassified-documents/assets/files/Untangling-the-Web ...
- elasticsearch映射 mapping
mapping的格式个应用,主要是创建索引(数据库)的时候指明type 的field类型,然后elasticsearch可以自动解析
- Python标准库 datetime
>>> import datetime >>> now = datetime.datetime.now() >>> now datetime.da ...
- 线段树(单点更新) HDU 1754 I Hate It
题目传送门 /* 线段树基本功能:区间最大值,修改某个值 */ #include <cstdio> #include <cstring> #include <algori ...
- spark序列化及MapOutputTracker解析
本文主要打算对spark内部的序列化机制以及在shuffle map中起衔接作用的MapOutputTracker做一下剖析.主要涉及具体实现原理以及宏观设计的一些思路. 1,spark序列化 任何一 ...
- 【转】在 26 岁时写给 18 岁的自己--Livid
原文:http://livid.v2ex.com/essays/2012/01/24/a-letter-from-26-to-18/ 我知道现在的自己是再也回不去的了.可是倘若有机会,我是多么希望能让 ...