题目描述
输入一个长度为 n的整数序列。接下来再输入 m个询问,每个询问输入一对 l,r。
对于每个询问,输出原序列中从第 l个数到第 r个数的和。
输入格式第一行包含两个整数 n和 m。
第二行包含 n个整数,表示整数数列。接下来m行,每行包含两个整数l和r,表示一个询问的区范围。
输出格式共 m行,每行输出一个询问的结果。
样例
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
inr main(){
int n,m;
cin>>n>>m;
int st[n+1],sum[n+1];
for(int i=1;i<n+1;i++){
scanf("%d ",&st[i]);
}
sum[0]=0;
for(int i=1;i<n+1;i++){
sum[i]=sum[i-1]+st[i];
}
//使用sum[]数组记录下前i 项的和
int l,r;
while(cin>>l>>r){
int num=sum[r]-sum[l]+st[l];
cout<<num<<endl;
}
//从l到r的和就是前r项的和-前l项的和+第l项
return 0;
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla