acwing 一维前缀和
原题链接

题解
解析
- 存储方式:
- 可以使用一个数组进行前缀求和(本题解)
- 可以使用两个数组,一个保存原数据,一个保存前缀和
- 注意事项:
前缀和数组存的数据必须从下标1开始,因为当左节点为数组首项时,此时范围内的和其实 就是S[r],但是代码中写的是S[r]-S[l],此时l=0,s[l]是有值的,结果错误
所以从下标1开始来避免这个问题,s[0]=0就可以了
代码
#include "iostream"
#include "vector"
using namespace std;
int main(){
int n,m,tmp,l,r;
cin>>n>>m;
vector<int>num;
num.push_back(0);
for(int i=1;i<=n;i++){
cin>>tmp;
num.push_back(tmp);
if(i!=1){
num[i]+=num[i-1];
}
}
for(int i=0;i<m;i++){
cin>>l>>r;
cout<<num[r]-num[l-1]<<endl;
}
}

浙公网安备 33010602011771号