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

目录
相关文章
|
3月前
|
机器学习/深度学习 C++
前缀和——OJ题(二)
前缀和——OJ题(二)
52 0
|
3月前
|
存储 算法
前缀和算法模板
前缀和算法模板
|
3月前
前缀和——OJ题(一)
前缀和——OJ题(一)
68 1
|
3月前
[leetcode 前缀和]
[leetcode 前缀和]
|
人工智能
线性DP——AcWing 898. 数字三角形、AcWing 895. 最长上升子序列
线性DP——AcWing 898. 数字三角形、AcWing 895. 最长上升子序列
69 0
|
人工智能 移动开发 机器人
蓝桥杯AcWing 题目题解 - 二分与前缀和、差分
蓝桥杯AcWing 题目题解 - 二分与前缀和、差分
121 0
【AcWing】单调栈
我的评价是:使用栈是真的妙
53 0
【AcWing】单调栈
|
人工智能
归并排序求逆序对 acwing例题代码
归并排序求逆序对 acwing例题代码
(前缀和模板题)795. 前缀和
(前缀和模板题)795. 前缀和
67 0