首先考虑序列怎么做。。。只要把操作差分了,记录在每个点上然后维护一棵权值线段树,表示每个颜色出现的次数,支持单点修改和查询最大值操作只要把序列扫一遍就好了,时间复杂度$O(n + m*logZ)$,其中$n$表述序列长度,$m$表示操作次数,$Z$表示颜色集合大小于是树形的时候,先树链剖分,然后把操...
分类:
其他好文 时间:
2015-05-16 13:14:02
阅读次数:
170
替罪羊树套权值线段树,其中替罪羊树可以满足插入的操作。#include #include #include #include #include #include #define rep(i, l, r) for(int i=l; il=t->r=blank; t->sum++; if (l==r) ...
分类:
其他好文 时间:
2015-05-05 21:18:43
阅读次数:
102
数据结构模版题【连这么神的题都沦为模版题了Orz对数离散化后树状数组套权值线段树。#include #include #include #include #include #include #include #define rep(i, l, r) for(int i=l; il=t->r=blan...
分类:
其他好文 时间:
2015-05-05 18:19:19
阅读次数:
98
这道题为树套树,我自己是替罪羊树套权值线段树。此题有三种操作:1.询问K值:可通过替罪羊树提取区间+权值线段树合并+二分答案求得2.修改:可通过权值线段树的删除+添加操作实现3.插入:可通过替罪羊树的插入操作实现#include #include #include #include #include...
分类:
其他好文 时间:
2015-04-21 22:09:21
阅读次数:
157
题解:
对于每个树上节点存一个版本的可持久化线段树,为它到根节点上所有权值的权值线段树(需要离散化)。
然后对于每次询问,这条链(a,b)的线段树就是:线段树a+线段树b?线段树lca?线段树falca线段树_a + 线段树_b - 线段树_{lca} - 线段树_{fa_{lca}}
然后线段树上求第k小啦。
代码:
#include
#include
#include...
分类:
其他好文 时间:
2015-04-15 09:44:07
阅读次数:
176
题目大意给出一个序列,问一段区间内有没有出现过一半以上的数字。思路用主席树取区间出来,在权值线段树上找。CODE#define _CRT_SECURE_NO_WARNINGS#include
#include
#include
#include
#define MAX 500010
#define MAXR 1000...
分类:
其他好文 时间:
2015-04-09 15:32:24
阅读次数:
161
题目大意给出一些任务开始的时间,结束的时间,和优先级。问在第k秒时的第k大优先级,和前k小优先级的和。思路CQOI太良心,所有题都是512M。
这个题只需要按照时间轴弄一个可持久化线段树就行了,每个时间点对应着一个权值线段树,维护子节点的和和个数。
注意在没有操作的时候,当前时间点的线段树要复制上一个时间点的线段树。CODE#define _CRT_SECURE_NO_WARNINGS#incl...
分类:
其他好文 时间:
2015-04-09 13:45:34
阅读次数:
203
好久没写题解了。但是这题太神了然后做法太神了于是写一下。这题做法很多,比如黄学长hzw的权值线段树套线段树,比如学长云的bit套主席树(其实是写法更神然后我不会用)。然后看到hzhwcmhf大神题解。http://tieba.baidu.com/p/2246783535震惊了。好了开说说做法。建一颗...
分类:
其他好文 时间:
2015-04-01 23:27:59
阅读次数:
216
题解:
外层权值线段树,内层区间线段树可解。
权值都是1~n,就不用离散化了。
我写了标记永久化。
其它心得神马的:
天生对树形数据结构无爱。
第一次写树套树,终于知道是怎么回事了。
(只针对本题)
就是外层每个点都表示了一段权值,
而它同时还是一颗线段树,
线段树里面记录了这段权值的出现区间、次数等等。
然后每次插入的时候
都是暴力地把该权值所在的...
分类:
其他好文 时间:
2015-01-22 18:22:20
阅读次数:
199