码迷,mamicode.com
首页 > 其他好文 > 详细

前缀和与差分

时间:2018-08-26 23:44:58      阅读:866      评论:0      收藏:0      [点我收藏+]

标签:lan   ref   差分   www.   +=   http   targe   知识   矩形   

前缀和与差分比较常用,也算是必须掌握的方法。主要用于对区间数据的查询处理。

在一维当中,前缀和就是指从某个元素开始一直到首个元素的和,差分是指每个元素与前一元素的差(首个元素即为本身)。

在二维里面,设一个N*M的矩阵,起点(左上角)为(1,1),终点右下角为(N,M)。则(i,j)的前缀和为以(1,1)为起点,以(i,j)为终点的矩形内所有元素的和;(i,j)的差分则是(i,j)-(i,j-1)-(i-1,j)+(i-1,j-1)。

比较有意思的是前缀和的差分和差分的前缀和即为各个元素。

前缀和主要用于区间求和,初始化复杂度为O(n),每次查询仅为O(1)。差分主要用于区间增加和单点查询,区间增加复杂度仅为O(1),单点查询相当于求差分数组的前缀和,复杂度为O(n)。区间增加,对于一维来说,要给[i,j]这个区间的每个元素加x,只需要令pre[i]+=x,pre[j+1]-=x即可(pre就是差分数组)。对于二维来说,要将(i,j,k,l)这个矩形内的每个元素都加x,则令pre[i,j]+=x,pre[i-1,l]-=x,pre[k,j-1]-=x,pre[k,l]+=x。

前缀和与差分一般并不单独考察,而是作为一种数据处理方式与其他知识点一起考察。

比如NOIP2012 借教室:https://www.luogu.org/problemnew/show/P1083

 

前缀和与差分

标签:lan   ref   差分   www.   +=   http   targe   知识   矩形   

原文地址:https://www.cnblogs.com/Mr94Kevin/p/9382597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!