题目链接:P8218 【深进1.例1】求区间和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题目描述
给定 n 个正整数组成的数列 a1, a2, ... , an 和 m 个区间 [li,ri],分别求这 m 个区间的区间和。对于所有测试数据,n,m < 10^5,ai <= 10^4。
输入格式
共 n+m+2 行。
第一行,为一个正整数 n。
第二行,为 n 个正整数 a1,a2, ... ,an。
第三行,为一个正整数 m。
第 4 到第 n+m+2 行,每行为两个正整数 li,ri,满足 1 <= li <= ri <= n。
输出格式
共 m 行。
第 i 行为第 i 组答案的询问。
样例 #1
样例输入 #1
4
4 3 2 1
2
1 4
2 3
样例输出 #1
10
5
提示
样例解释:第 1 到第 4 个数加起来和为 10。第 2 个数到第 3 个数加起来和为5。
对于 50% 的数据:n,m <= 1000;
对于 100% 的数据:n,m <= 10^5,ai <= 10^4。
AC code:
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;
int main()
{
ll n;
cin>>n;
vector<ll> a(n + 1);
vector<ll> perSum(n + 1);
for(ll i = 1 ; i <= n ; i ++)
{
cin>>a[i];
perSum[i] = perSum[i - 1] + a[i];
}
ll m;
cin>>m;
while(m --)
{
ll l,r;
cin>>l>>r;
cout<<perSum[r] - perSum[l] + a[l]<<endl;
}
return 0;
}