一维前缀和 + 二维前缀和 + 差分の详解(简单易懂)

本文详细介绍了前缀和和差分的概念,通过一维和二维前缀和的计算方法,阐述了它们之间的关系,并提供了解决区间修改和查询问题的高效策略。文章通过实例展示了如何利用差分和前缀和解决区间加法问题,以及在二维矩阵中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【引入】

首先给出一个问题:
给定n个数,再给出m个询问,每个询问给出区间Li,Ri和x,要求你在Li到Ri上每一个值都加上x,最后给出一个询问区间L,R的区间和,怎么办?
思考一下:如果暴力,最坏时间复杂度O(n^2);线段树或者树状数组,时间复杂度O(logn);而使用差分可以O(n)。

 要使用差分,首先我们来谈谈前缀和。

【前缀和】

什么是前缀和?前缀和是一个数组的某项下标之前(包括此项元素)的所有数组元素的和。 

设b[]为前缀和数组,a[]为原数组,根据这句话可以得到前缀和的定义式和递推式:

  定义式 递推式
一维前缀和  b[i]=\sum_{j=0}^{i}a[j] b[i]=b[i-1]+a[i]
二维前缀和
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值