AT_abc353_c 题解
思路
题目中有一点对本题而言非常重要:,所以 ,这也就说明 。首先只有当 时,它才会被取模,此时 ;其余情况()时,它不会被取模。其中 是必须存在的,我们设 是取模次数,则总和为 。其中 的计算我们可以先给 排序,然后枚举 ,二分计算 的个数即可。当然,如果你和我一样想偷懒的话你可以在 间 lower_bound,计算 的个数。
代码
# include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair <int, int> pii;
const int mod = 1e8;
int n, a[300005];
ll sum, ans;
int main () {
ios::sync_with_stdio (0);
cin.tie (0);
cout.tie (0);
cin >> n;
for (int i = 0; i < n; ++ i)
cin >> a[i], sum += a[i];
sort (a, a + n);
for (int i = 0; i < n; ++ i)
ans += &a[n] - lower_bound (a + i + 1, a + n, mod - a[i]);
cout << sum * (n - 1) - mod * ans;
return 0;
}

浙公网安备 33010602011771号