AT_abc423_e [ABC423E] Sum of Subarrays
N1tr0us_Acid · · 题解
vp 的时候一发过的,很显然的前缀和计数。
\texttt{Solution}
首先我们发现,对于每一对
那么每一个满足
把这个式子化开并整理后得到
处理一下
时间复杂度为
\texttt{Code}
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, q;
const int N = 3e5 + 10;
int a[N];
int sum[N];
int j2sum[N], jsum[N];
signed main(void) {
cin >> n >> q;
for (int i = 1; i <= n; i ++) {
cin >> a[i];
sum[i] = sum[i - 1] + a[i];
jsum[i] = jsum[i - 1] + a[i] * i;
j2sum[i] = j2sum[i - 1] + a[i] * i * i;
}
while (q --) {
int l, r;
cin >> l >> r;
int ans = sum[r] - sum[l - 1];
ans *= (r - l - l * r + 1);
ans -= (j2sum[r] - j2sum[l - 1]);
ans += (l + r) * (jsum[r] - jsum[l - 1]);
cout << ans << endl;
}
return 0;
}