牛客网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 ...
随机推荐
- HTML5中div,article,section的区别
最近正在学习html5,刚接触html5,感觉有点不适应,因为有一些标签改变了,特别是div, section article这三个标签,查了一些资料,也试着用html5和css3布局网页,稍微有点头 ...
- 《统计学习方法》笔记三 k近邻法
本系列笔记内容参考来源为李航<统计学习方法> k近邻是一种基本分类与回归方法,书中只讨论分类情况.输入为实例的特征向量,输出为实例的类别.k值的选择.距离度量及分类决策规则是k近邻法的三个 ...
- _bzoj1096 [ZJOI2007]仓库建设【斜率优化dp】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1096 又是一道经典斜率优化. #include <cstdio> const i ...
- POJ244Set Operation(bitset用法)
Bryce1010模板 /* 题意:给出n个集合(n<=1000),每个集合中最多有10000个数, 每个数的范围为1~10000,给出q次询问(q<=200000), 每次给出两个数u, ...
- Java三大特性之---封装
封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保 ...
- A. The Fault in Our Cubes 暴力dfs
http://codeforces.com/gym/101257/problem/A 把它固定在(0,0, 0)到(2, 2, 2)上,每次都暴力dfs检查,不会超时的,因为规定在这个空间上,一不行, ...
- Squid启动报:Could not determine this machines public hostname. Please configure one or set 'visible_hostname'.
在squid.conf中添加 visible_hostname squid.packet-pushers.net 或者编辑/etc/hosts文件, 在该文件中制定主机IP地址与主机名的对应.
- SAMBA服务初学练习
服务概述 Samba最先在Linux和Windows之间架起了一座桥梁,正是由于Samba的出现,我们可以在Linux和Windows之间实现文件共享的相互通讯,我们可以将其架设成一个功能非常强大的文 ...
- Python实现决策树C4.5算法
为什么要改进成C4.5算法 原理 C4.5算法是在ID3算法上的一种改进,它与ID3算法最大的区别就是特征选择上有所不同,一个是基于信息增益比,一个是基于信息增益. 之所以这样做是因为信息增益倾向于选 ...
- ML——决策树模型
决策树模型 优点:高效简单.易于理解,可以处理不相关特征. 缺点:容易过拟合,训练集在特征上是完备的 决策树过程:特征选择.划分数据集.构建决策树.决策树剪枝 决策树选择最优的划分特征,将数据集按照最 ...