题目描述
给定 个正整数组成的数列 和 个区间 ,分别求这 个区间的区间和。
输入格式
第一行包含一个正整数 ,表示序列的长度。
第二行包含 个正整数 。
第三行包含一个正整数 ,表示区间的数量。
接下来 行,每行包含两个正整数 ,满足 。
输出格式
共 行,其中第 行包含一个正整数,表示第 组答案的询问。
输入输出样例 #1
输入 #1
输出 #1
说明/提示
样例解释
第 到第 个数加起来和为 。第 个数到第 个数加起来和为 。
数据范围
对于 的数据: ;
对于 的数据: , 。
思路
这题就是很简单的一维前缀和题目,先求出原数组的前缀和,然后就可以快速求出每次的区间和
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include <iostream> #include <vector> using std::vector; using std::cin; using std::cout; using std::endl; int main() { int n,m,l,r; cin >> n; vector<int> a(n+1,0); vector<int> b(n + 1, 0); for (int i = 1; i <= n; i++) { cin >> a[i]; b[i] = b[i - 1] + a[i]; } cin >> m; for (int i = 1; i <= m; i++) { cin >> l >> r; cout << b[r] - b[l - 1] << endl; } }
|