1 条题解
-
0
#include<bits/stdc++.h> using namespace std; // [1] 全局变量定义:n为数列长度,m为查询次数 int n,m; // [2] arr数组:存储原始数列(1基索引,大小适配1e5数据范围) int arr[100100]; // [3] srr数组:存储前缀和(1基索引,初始化为0,大小适配1e5数据范围) int srr[100100]={}; int main() { // [4] 输入数列长度n和查询次数m cin>>n>>m; // [5] 循环读取n个数列元素,存入arr数组(1基索引,从第1位开始存储) for(int i=1;i<=n;i++){ cin>>arr[i]; } // [6] 初始化前缀和数组的第1项:前1项和等于第1个元素的值 srr[1]=arr[1]; // [7] 构建完整前缀和数组:srr[i] 表示前i项元素的和 for(int i=2;i<=n;i++){ srr[i]=srr[i-1]+arr[i]; } // [8] 处理m次区间和查询 for(int i=1;i<=m;i++){ int l,r; // [9] 输入当前查询的区间左端点l、右端点r(1≤l≤r≤n) cin>>l>>r; // [10] 前缀和公式计算区间[l,r]的和:前r项和 - 前l-1项和 int sum=srr[r]-srr[l-1]; // [11] 输出当前区间的和 cout<<sum<<endl; } return 0; }
- 1
信息
- ID
- 1369
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 1
- 上传者