权值线段与主席树总结 权值线段树就是把线段树的每个点权,赋予一定的含义,比如数字出现的次数,数值前缀出现的次数,并用区间求和维护一个区间信息,比如数字出现的次数,第K大等(不能实现区间第K大),前缀第K大等。 权值线段树优点: 能够比较容易实现平衡树的一系列操作 一个序列中,插入一个数,删除一个数, ...
分类:
其他好文 时间:
2019-08-14 21:53:18
阅读次数:
112
题目链接:http://codevs.cn/problem/1082/ 注意更新区间求和时,应该加上的是这一段区间包含的元素的个数乘以更新的值 ...
分类:
其他好文 时间:
2019-08-08 23:38:08
阅读次数:
120
操作: 单点更新,区间求和 区间求和:如sum [3,10) 需要对19,5,12,26节点求和即可。 观察可知,左端点为右子节点(奇数)时直接相加,右端点为左子节点(偶数)时直接相加,两边向中间移动并求其父节点。 Refer: Codeforces blog ...
分类:
其他好文 时间:
2019-07-27 09:38:44
阅读次数:
78
"点此看题面" 大致题意: 给你一个序列,让你支持区间求和、区间取模、单点修改操作。 区间取模 区间求和和单点修改显然都很好维护吧,难的主要是区间取模。 取模标记无法叠加,~~因此似乎只能暴力搞?~~ 实际上,我么先考虑一个结论: 一个数$x$向一个不大于它的数$p$取模,所得结果必然小于$\fra ...
分类:
其他好文 时间:
2019-07-19 20:58:51
阅读次数:
107
Description 给定一个长度为 $n$ 的序列,有 $m$ 次操作,要求支持区间加和区间求和。 Limitation $1 \leq n,~m \leq 10^5$ 序列元素值域始终在 范围内。要求使用树状数组解决 Solution ~~sb线段树板子题~~ 一直听说这题有树状数组做法,今天 ...
分类:
编程语言 时间:
2019-07-13 19:54:31
阅读次数:
94
题目传送门 题目描述: (原题英文) 操作0:输入l,r,t,线段树区间与t取min。 操作1:输入l,r,区间取最大值。 操作2:输入l,r,区间求和。 样例: 样例输入: 15 51 2 3 4 51 1 52 1 50 3 5 31 1 52 1 5 样例输出: 515312 数据范围与提示: ...
分类:
其他好文 时间:
2019-06-23 19:12:56
阅读次数:
96
https://oj.gxu.edu.cn/contest/7/problem/D 描述 有一个所有元素皆为0的数组A,有两种操作: 1 l r x表示将A区间[l,r]内所有数加上x; 2 l r表示将A区间[l,r]内从左往右数第i个数加上i; 给出m个操作,请输出操作结束后A中的最大值。 输入 ...
分类:
其他好文 时间:
2019-06-23 17:37:10
阅读次数:
101
最一般树状数组能做到的操作是单点修改,区间求和,都是log(n)级别的。原理就是用树状数组维护a[i]和它的前缀和的关系。 想要做到修改区间,求单点值也很简单,用树状数组维护a[i]的差分数组d[i]和它的前缀和的关系既可。 那么,如何同时做到区间求和,区间修改呢? 有人可能会说了,如果是区间求和区 ...
分类:
编程语言 时间:
2019-06-23 15:59:09
阅读次数:
188
直接维护乘积是肯定不可行的, 精度会爆炸, 于是我们来维护对数的和, 最后来计算最高位即可 那么转换成区间求和, 区间排序 区间排序的方式可以采用线段树维护最大递增块来解决,外层用set来维护线段树的区间, 然后利用线段树的合并分裂性质来操作即可 cpp include include includ ...
分类:
其他好文 时间:
2019-06-11 15:06:49
阅读次数:
101
先上板子,之后再写解析 1.单点查询、区间求和 2.区间更新、单点求和 3.区间更新和区间求和 ...
分类:
编程语言 时间:
2019-05-22 20:52:29
阅读次数:
128