前缀和 10.27
#include <iostream>
using namespace std;
int n,m;
const int N=100010;
int q[N],s[N];
int main(){
int t=0;
cin>>n>>m;
for(int i=1;i<n+1;i++){
cin>>q[i];
t+=q[i];
s[i]=t;
}
while(m--){
int l=0,r=0;
cin>>l>>r;
cout<<s[r]-s[l-1]<<endl;
}
}
本题本质上是预处理,对于这种需要实际计算的内容,我们一开始就给它算好,以后直接进行常数级访问会快很多,本题遇到的唯一问题是,这个下标位置和减法,按照常用的逻辑去装载列表,没办法取两边的包含[],因此我们把下标为0的数组空出来,从下标为1的地方进行处理,这样一来每次就能取到包含了,简简单单ac