1 base玩家的福音
a数组表示原来的数据,b[i]表示[0, i]的a数组的和。使用一个循环维护既可
那么[l, r]的和就是b[r] - b[l - 1];
#include <bits/stdc++.h> using namespace std; int main() { int n, q; cin >> n >> q; vector<long long> a(n + 1); for (int i = 0; i < n; i++) { cin >> a[i + 1]; } vector<long long> b(n + 1); for (int i = 1; i <= n; i++) { b[i] = b[i - 1] + a[i]; } for (int i = 0; i < q; i++) { int l, r; cin >> l >> r; cout << b[r] - b[l - 1] << '\n'; } } // 64 位输出请用 printf("%lld")