首页 > 编程语言 >前缀和算法

前缀和算法

时间:2023-03-22 20:35:44浏览次数:56  
标签:前缀 sum 个数 博客 算法 拆分

前缀和算法

什么是前缀和?

前缀和是指某序列的前n项和,可以把它理解为数学上的数列的前n项和,而拆分可以看成前缀和的逆运算。合理的使用前缀和与拆分,可以将某些复杂的问题简单化。

image-20230322201658252

具体做法:

首先做一个预处理,定义一个sum[]数组,sum[i]代表a数组中前i个数的和。

求前缀和运算:

for(int i = 1;i <= n; i++)
{ 
    sum[i] = sum[i - 1] + a[i];   
}

查询操作:

printf("%d\n", sum[r] - sum[l - 1]);

原理

sum[r] = a[1] + a[2] + a[3] + a[l-1] + a[l] + a[l + 1] ...... a[r];
sum[l - 1] = a[1] + a[2] + a[3] + a[l - 1];
sum[r] - sum[l - 1] = a[l] + a[l + 1] + ......+ a[r];

image-20230322202115740

这样,对于每个询问,只需要执行 sum[r] - sum[l - 1]。输出原序列中从第l个数到第r个数的和的时间复杂度变成了O(1)

我们把它叫做一维前缀和

总结:

image-20230322202216640

参考文章:前缀和与差分 图文并茂 超详细整理(全网最通俗易懂)_林小鹿@的博客-CSDN博客

标签:前缀,sum,个数,博客,算法,拆分
From: https://www.cnblogs.com/ChuenSan/p/17245333.html

相关文章

  • 算法总结--动态规划
    声明(叠甲):鄙人水平有限,本文为作者的学习总结,仅供参考。1.动态规划介绍动态规划,英文:DynamicProgramming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的......
  • 基于遗传算法优化的BP神经网络图像分割matlab仿真
    1.算法描述遗传算法(GeneticAlgorithm-GA)是一种基于自然选择和基因遗传学原理的优化搜索方法。它将“优胜劣汰,适者生存”的生物进化原理引入待优化参数形成的编码串群体中,按......
  • 通过MATLAB实现基于PSO优化的NARMAX模型参数辨识算法
    1.算法描述粒子群优化算法(PSO),粒子群中的每一个粒子都代表一个问题的可能解,通过粒子个体的简单行为,群体内的信息交互实现问题求解的智能性。最终算法伪代码如下:初始化:......
  • 通过MATLAB实现基于PSO优化的NARMAX模型参数辨识算法
    1.算法描述        粒子群优化算法(PSO),粒子群中的每一个粒子都代表一个问题的可能解,通过粒子个体的简单行为,群体内的信息交互实现问题求解的智能性。   ......
  • 代码随想录算法训练营Day50 动态规划
    代码随想录算法训练营代码随想录算法训练营Day50动态规划|123.买卖股票的最佳时机III188.买卖股票的最佳时机IV123.买卖股票的最佳时机III题目链接:123.买卖股票的最......
  • 算法 | 中缀表达式转后缀表达式并计算结果(利用栈)
    1.手动实现中缀转后缀2.代码实现中缀转后缀并计算表达式结果为了简化问题,假设算术运算符仅由加、减、乘、除4种运算符和左、右括号组成。step1:声明栈结构#include......
  • 算法学习1 前缀和与差分
    一前缀和是什么? 顾名思义,就是数组里面,以原数组的和作为另一个数组元素的数组。二有何益裨?求数组某个元素内,某一块区域内数据的和,并将他们的时间复杂度由O(n)降低到O(......
  • 算法笔记的笔记——第6章 C++标准模板库(STL)
    vector变长数组长度根据需要而自动改变的数组可以用来以邻接表的方式储存图使用头文件:#include<vector>命名空间:usingnamespacestd;定义vector<typename>n......
  • 分布式搜索算法,算法
    对于搜索引擎来说,索引存放在成千上万台机器上,如何进行分布式搜索呢? 假设搜索结果是以分页的方式显示,以PageNumber代表当前页,从1开始,以PageSize代表页面大小,默认为10,以N代表......
  • 「ACM 算法实践」[解题报告]组队
    分析因为时间不多了,我一开始只考虑了\(a_i\)互不相等的情况,没想到居然拿到了60昏(正确解法是贪心+优先队列。而不是从「使得人数最少的队伍人数最多」中得到的二分......