树状数组最原始的作用就是求前缀和,可以实现单点修改和区间查询。 但是假设现在有: 1.区间修改,单点查询 2.区间修改,区间查询 但是又不想敲线段树怎么办? 就用树状数组喽。 假设现在有一个原数组a(假设a[0] = 0),有一个数组d,d[i] = a[i] - a[i-1],那么 a[i] = ...
分类:
编程语言 时间:
2018-06-12 11:44:41
阅读次数:
168
思路: 线段树区间更新。注意这里是把一个区间的所有数全部赋值为一个新的值。 实现: ...
分类:
其他好文 时间:
2018-06-11 15:44:17
阅读次数:
134
昨天只是普通的线段树(简单的单点修改) 而今天将讲是比较普通的简单的区间修改(加法修改): 我主要是复制代码的蒟蒻我只能依靠模板为生,所以我想特地练下手: 好不容易打完了,可能会有很多错误,见谅! ...
分类:
其他好文 时间:
2018-06-03 10:47:00
阅读次数:
180
线段树模版之——区间修改与求和 题目描述:给出数的个数n以及操作数q:对于q:1 x y z 令区间[x, y]增加z2 x y 求区间和 有很多代码使用结构体实现线段树,不过我不太习惯用结构体来实现,因为有时候看到一堆点很难受... ...
分类:
其他好文 时间:
2018-06-02 21:31:45
阅读次数:
130
题意 给你一个区间,支持如下操作: 在一段区间内加上一个值,并生成一个历史版本 查询某个版本下一段区间内的和 回到一个历史版本上并舍弃之后的版本 做法 这就是主席树区间修改裸题啦QwQ 上一篇博客我讲了主席树可以资瓷单点修改,那么区间修改资不资瓷呢?那当然是资瓷的啦。 就像一般的线段树一样,主席树的 ...
分类:
其他好文 时间:
2018-05-23 22:10:41
阅读次数:
172
区间修改: 区间修改过程类似于区间询问,例如将[ul, ur]内的所有元素都加上v,则进行如下操作: 当当前区间被区间[ul, ur]所包含时, 当前的节点值加上区间长度(r - l + 1)乘以v 对当前节点的lazy-tag加上v,修改结束 否则,将当前节点的lazy-tag下传,分别修改左孩子 ...
分类:
其他好文 时间:
2018-05-16 13:05:12
阅读次数:
157
考虑差分sum[i] = a[1]+...+a[i] + delta[1]*i + delta[2]*(i-1)+delta[3]*(i-2)+...+delta[i]*1 // a[i]为原始数组 = sigma(a[x])+sigma(delta[x]*(i+1-x)) = sigma(a[x] ...
分类:
编程语言 时间:
2018-05-15 10:45:06
阅读次数:
182
在solve(L,R)中,需要先分治solve两个子区间,再计算左边区间修改对右边区间询问的贡献。 注意,计算额外的贡献时,两子区间各自内部的顺序变得不再重要(不管怎么样左边区间的都发生在右边之前),于是就少了一维 https://www.lydsy.com/JudgeOnline/problem. ...
分类:
其他好文 时间:
2018-05-12 14:21:09
阅读次数:
171
原理&实现 线段树是一种可以快速进行区间修改和查询的数据结构,并且我们已经知道可以通过dfs序加线段树来维护一棵子树的信息,那么,有没有一种方法来维护树上的两个点之间的链的信息的方法呢?当然是有的,这时就要请出树链剖分了。 对于一棵有根树,我们维护两个节点之间的路径信息时,可以想到维护两个点到lca ...
分类:
其他好文 时间:
2018-05-12 02:58:18
阅读次数:
207