#include <iostream> using namespace std; using ll = long long; const int N = 1000100; ll a[N], b[N]; int main() { int n, q, i, l, r; cin >> n >> q; for (i = 1; i <= n; ++i) cin >> a[i]; for (i = 1; i <= n; ++i) b[i] = b[i - 1] + a[i]; while (q--) { cin >> l >> r; cout << b[r] - b[l - 1] << '\n'; } return 0; } // 64 位输出请用 printf("%lld")
以普遍理性而论,前缀和就是这样的,刚学的时候有人叫维护一个啥啥,然后才学的维护前缀和,算是一个小技巧吧,有时用在dp前处理数据