链接:https://www.nowcoder.com/acm/contest/173/A
来源:牛客网

题目描述

一个长度为 m 的序列 b[1...m] ,我们定义它的方差为 ,其中  表示序列的平均值。
可以证明的是,如果序列元素均为整数,那么方差乘以 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

-->

示例1

输入

复制

4
1 1 1 2

输出

复制

2 2 2 0

说明

依定义可以计算 {1, 1, 2} 的方差为 1/3 * (1/9 + 1/9 + 4/9) = 2/9,{1, 1, 1} 的方差为 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 方差的更多相关文章

  1. 牛客网NOIP赛前集训营-提高组(第四场)游记

    牛客网NOIP赛前集训营-提高组(第四场)游记 动态点分治 题目大意: \(T(t\le10000)\)组询问,求\([l,r]\)中\(k(l,r,k<2^{63})\)的非负整数次幂的数的个 ...

  2. 牛客网NOIP赛前集训营-提高组(第四场)B区间

    牛客网NOIP赛前集训营-提高组(第四场)B区间 题目描述 给出一个序列$ a_1  \dots   a_n$. 定义一个区间 \([l,r]\) 是好的,当且仅当这个区间中存在一个 \(i\),使得 ...

  3. 牛客网NOIP赛前集训营-提高组(第四场)B题 区间

    牛客网NOIP赛前集训营-提高组(第四场) 题目描述 给出一个序列 a1, ..., an. 定义一个区间 [l,r] 是好的,当且仅当这个区间中存在一个 i,使得 ai 恰好等于 al, al+1, ...

  4. 牛客网NOIP赛前集训营-普及组(第二场)和 牛客网NOIP赛前集训营-提高组(第二场)解题报告

    目录 牛客网NOIP赛前集训营-普及组(第二场) A 你好诶加币 B 最后一次 C 选择颜色 D 合法括号序列 牛客网NOIP赛前集训营-提高组(第二场) A 方差 B 分糖果 C 集合划分 牛客网N ...

  5. 牛客网NOIP赛前集训营-提高组18/9/9 A-中位数

    链接:https://www.nowcoder.com/acm/contest/172/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  6. 牛客网NOIP赛前集训营-提高组(第八场)

    染色 链接:https://ac.nowcoder.com/acm/contest/176/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言10 ...

  7. 牛客网NOIP赛前集训营 提高组(第七场)

    中国式家长 2 链接:https://www.nowcoder.com/acm/contest/179/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K, ...

  8. [牛客网NOIP赛前集训营-提高组(第一场)]C.保护

    链接:https://www.nowcoder.com/acm/contest/172/C来源:牛客网 题目描述 C国有n个城市,城市间通过一个树形结构形成一个连通图.城市编号为1到n,其中1号城市为 ...

  9. 牛客网NOIP赛前集训营-提高组(第一场)

    牛客的这场比赛感觉真心不错!! 打得还是很过瘾的.水平也比较适合. T1:中位数: 题目描述 小N得到了一个非常神奇的序列A.这个序列长度为N,下标从1开始.A的一个子区间对应一个序列,可以由数对[l ...

随机推荐

  1. C++经典面试题库 附带参考答案

    1.    面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象. 2.    什么是类? 答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类. 3.  ...

  2. POJ3186【区间DP】

    题意: 每次只能取两端,然后第 i 次取要val[ i ]*i,求一个最大值 一切都是错觉[读者省略此段] 这道题目一开始想的就是记忆化搜索,然后太天真了?好像是,一开始用一维dp[ i ]直接代表一 ...

  3. bzoj 3704: 昊昊的机油之GRST【贪心+脑洞】

    脑洞题大概 首先处理出每个位置需要操作的次数c,假设第一次达到目标就不能再走,这样的操作次数是c差分后值的正数和,就想成分治每一段然后同减最小值然后从0处断开 然后考虑能一圈一圈走的情况,连续一段多走 ...

  4. c++计算程序时间

    #include<iostream.h> #include<time.h> void main() { clock_t start,finish; double totalti ...

  5. git 保存文件目录

    Ubuntu中git clone就保存在你命令行现在所在的目录里 所以最好推荐 先用cd这个命令去自己想保存的目录 之后再git clone

  6. vue移动端开发全家桶

     一句命令搞定全家桶:  npm install vue-router vue-resource vuex --save  main.js配置: import Vue from 'vue' impor ...

  7. eclipse | 配置JRE

    Window --> Preference --> Java ---> Installed JREs

  8. Jmeter安装说明

    本文主要介绍Jmeter工具的安装 一.安装JDK 1.下载jdk,到官网下载jdk,下载jkd1.8即可,地址:http://www.oracle.com/technetwork/java/java ...

  9. Asp.net WebApi 异常处理解决方案

    一.使用异常筛选器捕获所有异常 我们知道,一般情况下,WebApi作为服务使用,每次客户端发送http请求到我们的WebApi服务里面,服务端得到结果输出response到客户端.这个过程中,一旦服务 ...

  10. bryce1010专题训练——树状数组

    Bryce1010模板 1.一维树状数组 https://vjudge.net/contest/239647#problem/A[HDU1556] #include<bits/stdc++.h& ...