AcWing<795. 前缀和>

简介: 前缀和算法简要总结

image.png前缀和算法可以理解为是一种以空间换时间的方式,通过一个新的数组来存储从头到当前位置的数据量的总和。假设a数组为原数组,s数组是前缀和数组,那么s[i] = s[i-1]+a[i]。由此数组的有效数据应该从下标1开始。如此初始化之后,求区间和便可以优化到O(1),便可得到s[R] = s[1]+s[2]+...+s[R],s[L-1] = s[1]+s[2]+...+s[L-1]。若要求求 L 到 R 的区间和,就等于s[R] - s[L-1]。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 100010;
int n,m;
int back[N],arr[N];
int main() 
{
  scanf("%d%d",&n,&m);
  for(int i = 1;i<=n;i++)
  {
    scanf("%d",&arr[i]);
    back[i] = back[i-1] + arr[i];  //初始化前缀和数组
  }
  while(m--)
  {
    int l,r;
    scanf("%d%d",&l,&r);
    printf("%d\n",back[r]-back[l-1]);  //计算区间和
  }
  return 0;
}

image.gif

目录
相关文章
|
6月前
|
机器学习/深度学习 C++
前缀和——OJ题(二)
前缀和——OJ题(二)
65 0
|
移动开发 算法 机器人
[蓝桥杯] 二分与前缀和习题练习
又来更新了。二分与前缀和是蓝桥杯比较常考的内容,所以我们要多加练习这方面的习题。二分与前缀和的难度相对来说不算大,我们应该掌握其关键要点。
106 0
|
1月前
acwing 1016 最大上升子序列和
acwing 1016 最大上升子序列和
23 0
|
1月前
acwing 841 字符串哈希
acwing 841 字符串哈希
13 0
|
6月前
前缀和——OJ题(一)
前缀和——OJ题(一)
79 1
|
6月前
|
存储 算法
前缀和算法模板
前缀和算法模板
|
6月前
[leetcode 前缀和]
[leetcode 前缀和]
|
人工智能
线性DP——AcWing 898. 数字三角形、AcWing 895. 最长上升子序列
线性DP——AcWing 898. 数字三角形、AcWing 895. 最长上升子序列
82 0
|
人工智能 移动开发 机器人
蓝桥杯AcWing 题目题解 - 二分与前缀和、差分
蓝桥杯AcWing 题目题解 - 二分与前缀和、差分
155 0
(前缀和模板题)795. 前缀和
(前缀和模板题)795. 前缀和
79 0