前缀和差分
文章平均质量分 58
Brokenrivers
这个作者很懒,什么都没留下…
展开
-
4507. 子数组异或和 异或前缀和+位运算
利用以上性质,可以将原问题转换为两端点的异或前缀和要相等。原创 2022-08-15 21:15:34 · 415 阅读 · 0 评论 -
4405. 统计子矩阵 前缀和/双指针
数据为500,常规枚举矩形加前缀和判断需要n^4的复杂度,超时。枚举矩形上下边界,使区间变成一维,此时这个一行的区间内选取矩形,矩形的长越大,和越大,具有单调性。r表示快指针,当矩形和大于k时左指针向右移动使区间变小。此时满足区间内的和均小于k,其所有的子矩形和都小于k,每次有r-l+1个子矩形。...原创 2022-08-14 23:19:32 · 116 阅读 · 0 评论 -
前缀和差分练习
而差分标记的本质是给左端点之后的所有数加上一个标记,再给右端点之后的数减去一个标记。那么我们查看这个点是否被标记,只需要看这个点之前的正标记数是否大于负标记数,如果正标记多,说明这个点被标记了。本题应从区间上每个元素出发,因为一个元素就是一个buff,必须少一个buff才能符合要求,每次会给一个区间的buff加上积分。所以我们可以将标记的区间存下来,并且升序排序,然后每次询问的时候二分查找正负标记数,判断是否相抵消。还有一种方法是将有交集的区间合并,根据右端点排序,然后二分查找这个点是否在被标记区间内。..原创 2022-08-14 03:50:48 · 149 阅读 · 0 评论 -
简述树状数组及逆序数
树状数组求解逆序数,思路在注释。主要是离散化数组后,将数组元素当作树状数组下标利用树状数组每次统计比当前元素大有几个。将树状数组当成差分数组来看,修改区间和查询单点(差分的前缀和)树状数组可以解决大部分区间上面的修改以及查询的问题,例如。,换言之,线段树能解决的问题,树状数组大部分也可以。其修改和查询都是log级别的。树状数组的核心操作主要是。.........原创 2022-08-03 22:59:47 · 109 阅读 · 0 评论 -
前缀和差分(一维+二维)
标记也很复杂,但是基本逻辑和一维差分一样,某个差分元素+c,这个点对应的子矩阵元素全部+c,我们要做的不仅是(x1,y1)+c,同时还要将无关区域-c保持不变。这个很简单,如果使b[i]=b[i]+C,那么a[1],a[2]...a[i-1]都跟b[i]没关系,所以不改变。而我们需要加C的区间为[l,r],所以令b[l]=b[l]+C,同时还需要让b[r+1]=b[r+1]-C。但是a[i],a[i+1],a[n]因为都加上了b[i]所以值全部+C。sum[i][j]的前缀和为蓝色矩形的和。........原创 2022-07-16 00:02:13 · 440 阅读 · 0 评论 -
P1204 [USACO1.2]Milking Cows 一维差分
b[l]+c,效果使得a数组中a[l]及以后的数都加上了c(红色部分),但我们只要求l到r区间加上c,因此还需要执行b[r+1]-c,让a数组中a[r+1]及往后的区间再减去c(绿色部分),这样对于a[r]以后区间的数相当于没有发生改变。这个很简单,如果使b[i]=b[i]+C,那么a[1],a[2]...a[i-1]都跟b[i]没关系,所以不改变。而我们需要加C的区间为[l,r],所以令b[l]=b[l]+C,同时还需要让b[r+1]=b[r+1]-C。因为a是b的前缀和,所以满足。...原创 2022-07-15 16:06:04 · 309 阅读 · 0 评论