题解 | #【模板】前缀和#
【模板】前缀和
http://www.nowcoder.com/practice/acead2f4c28c401889915da98ecdc6bf
这题不难,主要注意几个坑点:
- 用两个vector数组会内存不足
- 给的样例运算后超出了int的范围,需要用long
using namespace std;
//时间复杂度:O(N)
//用vector老是内存超限,就用数组了
long num[100001]={0};
long sum[100001]={0};//sum[i]:第1个加到第i个的和
int main(){
int n,q;
cin>>n>>q;
for(int i=0;i<n;i++)
cin>>num[i];
for(int i=1;i<=n;i++){
sum[i]=num[i-1]+sum[i-1];
}
int l,r;
for(int i=0;i<q;i++){
cin>>l>>r;
cout<<sum[r]-sum[l-1]<<endl;//相减即为num[l]到num[r]的累加值
}
return 0;
}