D. Almost Difference Educational Codeforces Round 34 (Rated for Div. 2)

原创 2018年04月17日 14:42:38
  • 题目链接:http://codeforces.com/contest/903/problem/D
  • 题意:给一个大小为n的整数数组,数组元素 1 <= ai <=1e9, 求 ∑d(ai, aj), (1<= i < j <=n)
    • 这里写图片描述
  • 算法:数论(前缀和)
  • 思路:sum[i] = i*a[i] + (i=0~x-1)∑a[i] + num[a[i]+1] - num[a[i]-1]
    • 通过map 可以得知 i之前a[i]+1 和a[i]-1 的个数
  • 坑点:要用ans 要用long double,因为答案数值爆了long long
#include <bits/stdc++.h>
#define pi acos(-1)
#define fastcin ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
using namespace std;
typedef long long LL;
typedef pair<int, int> P;
const int INF = 0x3f3f3f3f;
const LL ll_INF = 0x3f3f3f3f3f3f3f3f;//4e18 ~= 2^62
const int maxn =200000 + 10;
const LL mod = 1e9+7;

LL sum[maxn], a[maxn];
map<LL,LL> mp;

int main()
{
    int n; scanf("%d", &n);
    for(int i=0; i<n; i++){
        scanf("%d", &a[i]);
    }
    sum[0]=a[0];
    for(int i=1; i<n; i++) sum[i]+=a[i]+sum[i-1];
    long double ans=0;
    mp[a[0]]++;
    for(int i=1; i<n; i++){
        ans+= i*a[i] - sum[i-1] + mp[a[i]+1] - mp[a[i]-1];
        mp[a[i]]++;
    }
    cout <<fixed << setprecision(0)<< ans << endl;
}

任意位置显示html菜单

脚本说明:把如下代码加入区域中document.onclick = popUp   function popUp() {newX = window.event.x + document.body.sc...
  • denal
  • denal
  • 2003-03-10 10:21:00
  • 866

Educational Codeforces Round 34 (Rated for Div. 2)

这是我这个弱渣第一次正儿八经打codeforce的比赛 只水出来A题一道签到题,B题和C题只是有思路 但是并没有写出来 至于D E F就根本没有看 可能没有挑战的欲望吧 以后就算做不出来也会想一想思路...
  • hdsdogge
  • hdsdogge
  • 2017-12-13 16:57:49
  • 92

Educational Codeforces Round 34 (Rated for Div. 2) D

D. Almost Difference time limit per test 2 seconds memory limit per test 256 megabytes ...
  • ACM_e
  • ACM_e
  • 2017-12-14 13:44:15
  • 142

Educational Codeforces Round 34 (Rated for Div. 2) E. Swapping Characters(暴力)

题目链接:http://codeforces.com/contest/903/problem/E 被这个题关了一天啊? 明显是个爆爆爆,因为最多允许有四个不同的位置,我们就暴力枚举交换就好...
  • sinat_32872703
  • sinat_32872703
  • 2017-12-14 21:35:28
  • 236

Educational Codeforces Round 36 (Rated for Div. 2) 题解

先总结一波 第一次打cf,感觉还不错,题目做得挺顺手。虽然开始30min才想起来有这么个比赛来着。。 纪念一下第一次的rank,话说题真是水 这是大概还剩下5min的时候截的,实际可能会...
  • jpwang8
  • jpwang8
  • 2018-01-13 23:16:24
  • 366

Educational Codeforces Round 39 (Rated for Div. 2) D Timetable

题目链接:点击打开链接题意:某大学一周有n天,一天有m小时工作/上课时间。给定n行m列0 和 1组成的字符,当第i行第j列为1时表示第i天第j小时有课。主角每天在学校的时间为第一节课到最后一节课之间(...
  • Lfhase
  • Lfhase
  • 2018-03-07 02:10:44
  • 83

Educational Codeforces Round 33 (Rated for Div. 2) E. Counting Arrays(组合数学)

原题链接:http://codeforces.com/contest/893/problem/E 代码: #include using namespace std; typedef lon...
  • sinat_32872703
  • sinat_32872703
  • 2017-11-29 21:46:34
  • 132

Educational Codeforces Round 39 (Rated for Div. 2) D. Timetable (背包)

题意:    一个周期有n天,每天有m节课,一个周期的时间可以逃课k次。问至少要在学校里待多久。(从早上去的第一节课到最后一节课,如果没有课就不去)分析:    每天有x节课,我们需要考虑旷课[0,x...
  • lj130lj
  • lj130lj
  • 2018-03-08 20:20:23
  • 17
收藏助手
不良信息举报
您举报文章:D. Almost Difference Educational Codeforces Round 34 (Rated for Div. 2)
举报原因:
原因补充:

(最多只允许输入30个字)