【OI学习笔记】基础算法-前缀和与差分算法

位姿测量 | 正交迭代(OI)算法的原理及其MATLAB实现 在做基础的算法复现时,发现目前开源的比较多的代码多为人工智能领域,而航空航天领域的算法,用的人比较少,开源的代码更少。临近毕业,想着整理一下这几年的工作代码,把更普遍用的代码公开,希望能对航空航天领域的新手有所帮助。本文介绍正交迭代算法的求解思路和MATLAB代码实现。正交迭代算法(orthogonal iteration algorithm),简称OI算法,用来求解相对位置和相对姿态参数。注意,本文只介绍OI算法的求解流程以及相关MATLAB代码实现。。 阅读详情

板块:基础算法、线性优化
难度:较易
前置知识:C++基础语法

一、前缀和

1、定义

  • 在一维空间中,对于一个数据总量为 n n n 的数组 a a a,有数据 a [ 1 ] , a [ 2 ] , a [ 3 ] , . . . , a [ n − 1 ] , a [ n ] a[1],a[2],a[3],...,a[n-1],a[n] a[1],a[2],a[3],...,a[n−1],a[n],定义一个数组 s u m sum sum, s u m [ i ] sum[i] sum[i] 存储 a [ 1 ] ∼ a [ i ] a[1] \sim a[i] a[1]∼a[i] 的数据总和,我们就称 s u m sum sum 是 a a a 的前缀和.

2.本质与应用领域

对于数组:

1 2 3 4 5 6 7

根据定义,我们计算出它各项所对应的前缀和应该是:

1 3 6 10 15 21 28
1 1+2 3+3 6+4 10+5 15+6 21+7

不难发现,前缀和的本质就是 递推.从前往后依次计算出前缀和.前缀和是一种思想,它是一种对算法进行时间优化的预处理数据的思想.前缀和的应用领域很宽广,比如用于线性优化、求和、预处理数据等.

3.一维前缀和

上文中我们所举的数组便是典型的一维前缀和,其 预处理递推公式 为: f [ n ] = f [ n − 1 ] + a [ n ] ( n ≥ 1 , f [ 0 ] = 0 ) f[n]=f[n-1]+a[n](n \geq1,f[0]=0) f[n]=f[n−1]+a[n](n≥1,f[0]=0)
易得其时间复杂度为 O ( n ) O(n) O(n).
完成预处理后,我们将会面临 查询 的问题,对于一个区间 l ∼ r l\sim r l∼r,查询其区间前缀和的公式为:
s [ r ] − s [ l − 1 ] ( l ≥ 1 ) s[r]-s[l-1](l\geq 1) s[r]−s[l−1](l≥1)
易得其时间复杂度为 O ( 1 ) O(1) O(1).

4.二维前缀和

二维前缀和和一维前缀和同理,需要推导出预处理递推公式和查询公式.
如下图,我们需要递推 a [ 1 ] [ 1 ] ∼ a [ i ] [ j ] a[1][1]\sim a[i][j] a[1][1]∼a[i][j] 的前缀和即 s [ i ] [ j ] s[i][j] s[i][j] .由图示可知, s [ i ] [ j − 1 ] s[i][j-1] s[i][j−1] 存储的是 a [ 1 ] [ 1 ] ∼ a [ i ] [ j − 1 ] a[1][1]\sim a[i][j-1] a[1][1]∼a[i][j−1] 的前缀和,即黄色区域和红色区域; s [ i − 1 ] [ j ] s[i-1][j] s[i−1][j] 存储的是 a [ 1 ] [ 1 ] ∼ a [ i − 1 ] [ j ] a[1][1]\sim a[i-1][j] a[1][1]∼a[i−1][j] 的前缀和,即黄色区域和红色区域.这个推导类似于在电脑中进行框选操作时拖动鼠标的而显示出的矩形区域.如果我们将 s [ i ] [ j − 1 ] s[i][j-1] s[i][j−1] 和 s [ i − 1 ] [ j ] s[i-1][j] s[i−1][j] 相加,我们不难得到绿色区域、红色区域和两个黄色区域的前缀和,也就发现多出了一个黄色区域,因此减去 s [ i − 1 ] [ j − 1 ] s[i-1][j-1] s[i−1][j−

前缀和、差分比赛4题 本文分享了四道算法题的解题思路和代码实现: 水壶问题:通过前缀和计算连续k+1个水壶的水量之和,取最大值。注意数据范围使用long long。 二维前缀和模板:利用二维前缀和公式快速查询子矩阵和,注意处理边界条件。 语文成绩差分:使用差分数组实现区间加减,最后求最小值时需还原原始数组。 卡牌游戏:通过前缀和计算所有可能的分段和,累加正数部分作为最大得分,特别注意数据范围需使用long long。 各题均强调数据范围的重要性,避免整型溢出。解题思路主要围绕前缀和、差分等基础算法展开,通过预 阅读详情

相关推荐

前缀和与差分技巧(c++三阶算法)

开始学习前先来思考一个问题:给定一个数组a包含n(1

m0_72610323的博客 434

从接线到组态:手把手教你搞定PROFIBUS-DP与PA的混合网络搭建(基于西门子TIA Portal)

本文详细介绍了PROFIBUS-DP与PA混合网络的搭建方法,基于西门子TIA Portal平台,从硬件选型、网络架构设计到组态配置和现场调试,提供了一套完整的实战指南。重点解析了DP/PA耦合器的使用、地址映射策略及网络诊断技巧,帮助工程师高效构建高可靠性的工业自动化网络。

weixin_32103009的博客 302

基于ROS下的安卓手机图像和IMU跑ORB-SLAM3

接之前文章继续,手上没有现成的单目+IMU硬件,但是安卓手机几乎人人都有。因此,本文讲下如何用手机跑ORB-SLAM3的Mono和Mono_Inertial。 1. 手机与PC通信 基于ROS下的信息发布和订阅,手机和PC在一个局域网下进行信息(image和IMU)传输。 手机APK参考了github上的2个开源Android_Camera-IMU和android_ros_sensors,基于ros_java生成安卓APP,下载安装任一个APP到安卓手机,界面分别是这样: 手机和PC连一个无

h_372101的博客 1万+

双轴按键摇杆模块原理与嵌入式驱动实战

双轴按键摇杆是一种融合模拟量(X/Y轴)与数字量(Z轴按键)的复合型人机交互传感器,其本质基于电位器分压原理与机械开关通断特性。通过ADC采集连续电压信号并结合数字IO检测按键状态,可实现高鲁棒性的二维运动感知与触发控制。该方案技术门槛低、成本可控、兼容性强,广泛应用于智能小车、DIY游戏手柄、工业HMI及教育开发板等嵌入式场景。文中深入解析电位器线性度、KEY引脚开漏特性、ADC参考电压稳定性及软件消抖状态机等关键工程要素,为基于Arduino、STM32或ESP32平台的快速集成提供可复用的技术路径。

weixin_30995917的博客 82

COT Buck和普通Buck的区别

传统的电流模控制的调制原理,由时钟脉冲信号 clk 的上升沿触发开始一个新的开关周期,d 由低变高,主开关闭合,流过它的电流和电感电流相等,并以固定斜率逐渐增大,直至 iL *Ri 与斜坡补偿信号 se 的和等于控制信号 vc;此时,比较器的输出电平由低变高,导通时间产生器被触发,其输出 d 由低变高,并产生一个固定的导通时间 Ton;然后 PWM 比较器的输出由低变高,导通时间产生器被触发,主开关闭合,电感电流逐渐增大,直到导通时间产生器计满固定的时间 Ton,d 变为低电平,主开关断开,周期结束。

模拟芯片设计 1128

逆向工程师视角:拆解DataDome滑块验证码的3层防护机制与绕过思路

本文从逆向工程师视角,深入剖析DataDome滑块验证码的三层核心防护机制。第一层通过动态加密参数实现会话绑定与抗重放;第二层采集TLS指纹、鼠标轨迹动力学等多维行为数据进行一致性验证;第三层则是基于机器学习的后端异步风险决策引擎。文章不仅拆解了其技术原理,更分享了模拟、钩取等超越单纯工具调用的底层分析与绕过思路。

f6g7h8i9j的博客 731

2025.06.16【转录组】|Ribo-seq数据流程详解(二 基因组比对)

本文详细介绍了Ribo-seq数据分析中的比对流程,包括环境准备、STAR索引构建、比对参数设置及结果统计可视化。通过samtools和R脚本实现比对质量评估,提供常见问题解决方案和关键指标解读。该流程强调比对参数优化和质量控制,为后续翻译组学分析奠定基础。

1978

电子元器件-接口电路篇:RS-232、RS485/422、I2C、SPI、USB、网口

以上规定说明了RS-232C 标准对逻辑电平的定义。对于数据(信息码):逻辑“1”的传输的电平为-3V~-15V,逻辑“0”传输的电平为+3V~+15V;对于控制信号;接通状态(ON)即信号有效的电平为+3V~+15V,断开状态(OFF)即信号无效的电平为-3V~-15V,也就是当传输电平的绝对值大于3V 时,电路可以有效地检查出来;

qq_60226558的博客 887

【WRF-Urban运行】WRF-SLUCM耦合建模参数设置及模拟运行

WRF-SLUCM耦合建模参数设置及模拟运行

WW、forever的博客 1723

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: 【洛谷题解/CQOI2005题解】P5764/CQOI2005 新年好
下一篇: 【AcWing】AcWing 1022. 宠物小精灵之收服
oier_Asad.Chen
博客等级 码龄7年 15粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oier_Asad.Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值