You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
##[$AcWing$ $795$ 前缀和](https://www.acwing.com/problem/content/797/)
|
|
|
|
|
|
|
|
|
|
### 一、题目描述
|
|
|
|
|
输入一个长度为 $n$ 的整数序列。
|
|
|
|
|
|
|
|
|
|
接下来再输入 $m$ 个询问,每个询问输入一对 $l,r$。
|
|
|
|
|
|
|
|
|
|
对于每个询问,输出原序列中从第 $l$ 个数到第 $r$ 个数的和。
|
|
|
|
|
|
|
|
|
|
**输入格式**
|
|
|
|
|
第一行包含两个整数 $n$ 和 $m$。
|
|
|
|
|
|
|
|
|
|
第二行包含 $n$ 个整数,表示整数数列。
|
|
|
|
|
|
|
|
|
|
接下来 $m$ 行,每行包含两个整数 $l$ 和 $r$,表示一个询问的区间范围。
|
|
|
|
|
|
|
|
|
|
**输出格式**
|
|
|
|
|
共 $m$ 行,每行输出一个询问的结果。
|
|
|
|
|
|
|
|
|
|
**数据范围**
|
|
|
|
|
$1≤l≤r≤n,1≤n,m≤100000,−1000≤数列中元素的值≤1000$
|
|
|
|
|
|
|
|
|
|
### 二、实现代码
|
|
|
|
|
```cpp {.line-numbers}
|
|
|
|
|
#include <bits/stdc++.h>
|
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
const int N = 100010;
|
|
|
|
|
int q[N];
|
|
|
|
|
int s[N];
|
|
|
|
|
// 一维前缀和
|
|
|
|
|
int main() {
|
|
|
|
|
int n, m;
|
|
|
|
|
cin >> n >> m;
|
|
|
|
|
for (int i = 1; i <= n; i++) {
|
|
|
|
|
cin >> q[i];
|
|
|
|
|
s[i] = s[i - 1] + q[i];
|
|
|
|
|
}
|
|
|
|
|
while (m--) {
|
|
|
|
|
int l, r;
|
|
|
|
|
cin >> l >> r;
|
|
|
|
|
printf("%d\n", s[r] - s[l - 1]);
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
```
|