首页 > 建设道路
头像 Ke2sen
发表于 2020-04-19 07:08:14
思路 通过读题我们很容易看出他就是让我们求这么一个东西: 我们把后边的完全平方公式展开就是: 显然我们还可以把 提出来 显然后边的 和我们可以提前用前缀和处理 我们用sum[i]表示对a[i]数组的前缀和,用sum2表示对的前缀和 那么原来的式子就能化成: 最后的时候注意取膜就行了 code 展开全文
头像 白色L号谢谢
发表于 2020-04-18 23:15:07
Cometoj出过这题。。考虑单个点的贡献(a[i] - a[x]) * (a[i] - a[x]) = a[i] * a[i] - 2 * a[i] * a[x] + a[x] * a[x]所以里面一共就有(n - 1)个a[i]的平方以及除了a[i]外其他所有数的平方,中间这部分减法就是2 * 展开全文
头像 VoidJackLee
发表于 2020-04-18 22:49:44
分析 根据题意,我们可以得出是要求两两数字之间的差值的平方,由于数据很多,的暴力是肯定不行的。 那么我们只能写一个O(n)的算法,所以会想到求前缀和。 求解 这边由于都是差值,所以得进行一个转化,使得他成为前缀和的形式。 先排序,再两两做差即可。 int n; scanf("%d",&n); 展开全文
头像 中等人
发表于 2020-04-20 15:24:50
通俗易懂https://blog.csdn.net/qq_45810570/article/details/105617824
头像 pphkaa
发表于 2020-04-21 15:58:47
(a[i] - a[x]) * (a[i] - a[x]) = a[i] * a[i] - 2 * a[i]* a[x] + a[x] * a[x]所以里面一共就有(n - 1)个a[i]的平方,中间这部分减法就是2 * (sum - a[i]) * a[i], sum即是所有数字的和。然后举个简单 展开全文
头像 wenyisir
发表于 2020-04-19 13:21:59
题目要我们求得答案为 我们令由于 矩阵的对称性知 #include<cstdio> #include<iostream> using namespace std; typedef long long ll; const int mod =1e9+7; ll a[50 展开全文
头像 秃头小白
发表于 2020-08-13 15:58:17
题目链接 https://ac.nowcoder.com/acm/contest/5158/J 题目分析 意思很简单,给出每个城市的价值,求任意俩城市价值差值的平方和。看到数据你就应该明白,不能暴力啊,这样比较简单的要求自然会想到公式变形。暴力时间复杂度:O(n*(n-1)/2) 解题思路 先枚举写 展开全文
头像 Meul
发表于 2020-04-19 01:20:42
Question Solution 后缀和优化到求一个后缀和优化一下,按公式做就好了。 Code #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> 展开全文