题目描述
Point:
1、前缀和下标从1开始, s[0] = 0,用于处理边界。
2、两个数学公式
预处理公式
$$s[i] = s[i - 1] + a[i]$$
求值公式
$$\sum_{i = l}^r a[i] = S[r] - S[l-1]$$
3、一般有单调性,查询可以用二分优化
C++ 代码
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int q[N];
signed main()
{
int n, m;
cin >> n >> m;
q[0] = 0;
for(int i = 1; i <= n; ++ i)
{
int temp;
scanf("%d",&temp);
q[i] = q[i - 1] + temp;
}
while(m--)
{
int l, r;
scanf("%d%d",&l,&r);
printf("%d\n",q[r] - q[l - 1]);
}
return 0;
}