牛客网提高组第二场---solution
T1 方差
根据题目要求将式子先写出来
注意下面式子中的 $n$ 全部都是 $n-1$
$$
\begin{aligned}
ans&=n^2\times \frac{1}{n}\times \sum_{i=1}^{n}\left(b_i-\overline{b}\right)^2
\\&=n\times \sum_{i=1}^{n}\left({b_i}^2-2b_i\overline{b}+{\overline{b}}^2\right)
\\&=n\times \left(\sum_{i=1}^{n}{b_i}^2-2\overline{b}\times \sum_{i=1}^{n}b_i+n\times \overline{b}\right)
\\&=n\times \sum_{i=1}^{n}{b_i}^2-n\times 2\overline{b}\times \sum_{i=1}^{n}b_i+n\times n\times \overline{b}
\\&=n\times \sum_{i=1}^{n}{b_i}^2-2\times \left(\sum_{i=1}^{n}b_i\right)^2+n\times \sum_{i=1}^{n}b_i
\end{aligned}
$$
上面最后一步化出来的式子就是最简的式子。
我们可以通过一些预处理将其 $\text{O}(1)$ 求出来。这样总的时间复杂度是 $\text{O}(n)$ 的,还是很优秀的复杂度。
附上代码
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int maxn = 1e5+;
int n;
long long a[maxn], sum, POW, ans;
int main() {
scanf("%d", &n);
for(int i=; i<=n; i++)
scanf("%lld", &a[i]), sum += a[i], POW += a[i] * a[i];
for(int i=; i<=n; i++) {
long long tmp = sum, ppp = POW;
tmp -= a[i];
ppp -= a[i]*a[i];
ans = ppp*(n-) - (*tmp*tmp) + (tmp*tmp);
printf("%lld", ans);
if(i != n) printf(" ");
else printf("\n");
}
}
牛客网提高组第二场---solution的更多相关文章
- 18/9/16牛客网提高组Day2
牛客网提高组Day2 T1 方差 第一眼看就知道要打暴力啊,然而并没有想到去化简式子... 可能因为昨晚没睡好,今天上午困死 导致暴力打了一个半小时,还不对... #include <algor ...
- 18/9/9牛客网提高组Day1
牛客网提高组Day1 T1 中位数 这好像是主席树??听说过,不会啊... 最后只打了个暴力,可能是n2logn? 只过了前30% qwq #include<algorithm> #in ...
- 牛客网 提高组第8周 T1 染色
染色 链接: https://ac.nowcoder.com/acm/contest/176/A 来源:牛客网 题目描述 \(\tt{fizzydavid}\)和\(\tt{leo}\)有\(n\)个 ...
- 牛客网 提高组第8周 T2 推箱子 解题报告
推箱子 链接: https://ac.nowcoder.com/acm/contest/176/B 来源:牛客网 题目描述 在平面上有\(n\)个箱子,每个箱子都可以看成一个矩形,两条边都和坐标轴平行 ...
- nowcoder(牛客网)提高组模拟赛第一场 解题报告
T1 中位数(二分) 这个题是一个二分(听说是上周atcoder beginner contest的D题???) 我们可以开一个数组b存a,sort然后二分b进行check(从后往前直接遍历check ...
- nowcoder(牛客网)提高组模拟赛第四场 解题报告
T1 动态点分治 就是模拟..... 但是没有过!! 看了题解之后发现.... 坑点:有可能 \(x<=r\),但是
- 牛客网提高组模拟赛第七场 T3 洞穴(附bitset介绍)
就是DP. 我们可以很简单的想到要枚举中间点,进行边数的转移. 但是因为边长数据范围很大,所以我们考虑log的倍增. 状态设计为\(dp[i][j][k]\),为从节点\(i\)走\(2^k\)步能否 ...
- 牛客网提高组模拟赛第七场 T2 随机生成树
其实看懂题就很水啦qwq,就是求\(1-N\)的约数啦. 暴力求的话时间复杂度是\(O(NlogN)\)的,其实正解是枚举每个数的倍数......这样的时间复杂度是\(\frac{N}{1}+\fra ...
- 牛客网提高组模拟赛第五场 T1同余方程(异或)(位运算)
区间不好做,但是我们可以转化成前缀来做.转化为前缀之后之后就是二维前缀和. 但是我还是不怎么会做.所以只能去看吉老师的题解 (确定写的那么简单真的是题解???). 我们要求模一个数余0,就等于找它的倍 ...
随机推荐
- 转载:Eclipse build Android时不生成apk问题解决方法
Eclisps有时build后不生成apk.没有对Eclise做过设置调整,android工程代码也是没有问题的.反正就是莫名奇妙的遇到两次,解决方法如下: 1. 设置:Preferences -&g ...
- 组合数学练习题(一)——Chemist
题意: 从 n 个人中选出不超过 k 个人,再在选出的人中选出一些人成为队员,再在队员中选一名队长,求不同的方案数.答案 mod 8388608. 共有T组询问,每次给你n和k.T ≤ 10^4 k ...
- windows 下使用命令行操作ftp
open 192.168.10.6 (连接到FTP主机) User allan\ftp (用户连接验证,注意这里的用户用到的是FTP服务器端创建的用户名) 123 ...
- 贪心 Codeforces Round #273 (Div. 2) C. Table Decorations
题目传送门 /* 贪心:排序后,当a[3] > 2 * (a[1] + a[2]), 可以最多的2个,其他的都是1个,ggr,ggb, ggr... ans = a[1] + a[2]; 或先2 ...
- D. Green and Black Tea 贪心 + 构造
http://codeforces.com/contest/746/problem/D 首先说下一定是NO的情况. 假设a > b 那么,b最多能把a分成b + 1分,如果每份刚好是k的话,那么 ...
- bootstrap不同屏幕区分数值
@media (min-width:1200px){ } @media (min-width:992px) and (max-width:1199px){ } @media (min-width:76 ...
- hihocoder 神奇字符串
思路: 暴力,模拟. 实现: #include <iostream> #include <algorithm> #include <cstdio> #include ...
- android环境搭建环境 cordova run android gradle wrapper报错
cordova run android命令报错 Error: Could not find an installed version of Gradle either in Android Studi ...
- 纯css实现的三级水平导航菜单
vscode练习使用开发纯css的三级水平导航菜单.先上图: 1.html5布局 <html> <head> <meta charset="UTF-8" ...
- 第一次阅读作业 xinzcover
---恢复内容开始--- 第一次阅读和准备作业 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1 这个作 ...