Educational Codeforces Round 34 (Rated for Div. 2)D. Almost Difference(数学)
2018-01-22 21:48
435 查看
D. Almost Difference
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Let's denote a function
![](http://codeforces.com/predownloaded/c9/33/c933141cba2722f9b46437b831e02003443507b6.png)
You are given an array a consisting of n integers.
You have to calculate the sum of d(ai, aj) over
all pairs (i, j) such that 1 ≤ i ≤ j ≤ n.
Input
The first line contains one integer n (1 ≤ n ≤ 200000)
— the number of elements in a.
The second line contains n integers a1, a2,
..., an (1 ≤ ai ≤ 109)
— elements of the array.
Output
Print one integer — the sum of d(ai, aj) over
all pairs (i, j) such that 1 ≤ i ≤ j ≤ n.
Examples
input
output
input
output
input
output
题目大意:有一个序列,现在根据要求求出最后d(x,y)总和
解题思路:考虑到这个题不能暴力,这个题要做的是求一个前缀和,同时判断在当前值ai之前有多少个比ai大1和比ai小1的个数,然后计算
Note
In the first example:
d(a1, a2) = 0;
d(a1, a3) = 2;
d(a1, a4) = 0;
d(a1, a5) = 2;
d(a2, a3) = 0;
d(a2, a4) = 0;
d(a2, a5) = 0;
d(a3, a4) = - 2;
d(a3, a5) = 0;d(a4, a5) = 2.
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Let's denote a function
![](http://codeforces.com/predownloaded/c9/33/c933141cba2722f9b46437b831e02003443507b6.png)
You are given an array a consisting of n integers.
You have to calculate the sum of d(ai, aj) over
all pairs (i, j) such that 1 ≤ i ≤ j ≤ n.
Input
The first line contains one integer n (1 ≤ n ≤ 200000)
— the number of elements in a.
The second line contains n integers a1, a2,
..., an (1 ≤ ai ≤ 109)
— elements of the array.
Output
Print one integer — the sum of d(ai, aj) over
all pairs (i, j) such that 1 ≤ i ≤ j ≤ n.
Examples
input
5 1 2 3 1 3
output
4
input
46 6 5 5
output
0
input
46 6 4 4
output
-8
题目大意:有一个序列,现在根据要求求出最后d(x,y)总和
解题思路:考虑到这个题不能暴力,这个题要做的是求一个前缀和,同时判断在当前值ai之前有多少个比ai大1和比ai小1的个数,然后计算
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <string> #include <cmath> #include <cstdlib> #include <ctime> #include <iomanip> using namespace std; typedef long long LL; typedef long double ld; ld cnt,sum[200005]; map<LL,int> a; LL x; int i,n; int main() { cin>>n; cnt=0; for(i=1;i<=n;i++) { cin>>x; cnt+=x*(i-1)-sum[i-1]; if(a[x-1]) cnt-=a[x-1]; if(a[x+1]) cnt+=a[x+1]; sum[i]=sum[i-1]+x; a[x]++; } cout << fixed << setprecision(0) << cnt << endl; }
Note
In the first example:
d(a1, a2) = 0;
d(a1, a3) = 2;
d(a1, a4) = 0;
d(a1, a5) = 2;
d(a2, a3) = 0;
d(a2, a4) = 0;
d(a2, a5) = 0;
d(a3, a4) = - 2;
d(a3, a5) = 0;d(a4, a5) = 2.
相关文章推荐
- Educational Codeforces Round 34 (Rated for Div. 2) D - Almost Difference
- Educational Codeforces Round 34 (Rated for Div. 2) D - Almost Difference
- Educational Codeforces Round 34 (Rated for Div. 2) D. Almost Difference(高精度)
- Educational Codeforces Round 34 (Rated for Div. 2) E. Swapping Characters(暴力)
- Educational Codeforces Round 34 (Rated for Div. 2)B. The Modcrab(贪心)
- Educational Codeforces Round 34 (Rated for Div. 2) C - Boxes Packing
- Educational Codeforces Round 34 (Rated for Div. 2)
- Educational Codeforces Round 34 (Rated for Div. 2) D - Almost Difference
- Educational Codeforces Round 34 (Rated for Div. 2)
- Educational Codeforces Round 34 (Rated for Div. 2) A-C 题解
- Educational Codeforces Round 36 (Rated for Div. 2)D. Almost Acyclic Graph(正解!!百度的那些拓扑排序现在都已经TLE!)
- Codeforece Educational Codeforces Round 34 (Rated for Div. 2) (A-D)题解
- Educational Codeforces Round 39 (Rated for Div. 2) E Largest Beautiful Number
- Educational Codeforces Round 35 (Rated for Div. 2) A——C
- Educational Codeforces Round 35 (Rated for Div. 2) - (A,B,C,D)
- Educational Codeforces Round 38 (Rated for Div. 2) A. Word Correction
- Educational Codeforces Round 37 (Rated for Div. 2) 【F】【线段树】
- Educational Codeforces Round 39 (Rated for Div. 2) codeforces946 A.Partition B.Weird Subtraction Process C.String Transformation
- 【codeforces 】Educational Codeforces Round 36 (Rated for Div. 2)(C.模拟 D.拓扑排序判断环)
- Educational Codeforces Round 40 (Rated for Div. 2) B. String Typing