随笔分类 - 树状数组及线段树
摘要:题链 我们统计一波区间的最大最小值。 answer=max(sum-区间最小值,区间最大值); 特判一点,当最小值>0时,那么我们把最小值减去,因为我们不能选一个圈。 一遍过样例什么的最虚了。
阅读全文
摘要:我们可以贪心的做。 如果不考虑如何判一个点被覆盖K次的话。这就是一道经典问题。 我们先把线段排序,那么我们考虑一个队列。 我们发现我们先把小的塞进队尾,等到塞的足够多(存在一个点被覆盖了K次)我们就更新答案并把队尾弹出。 我们可以用线段树维护点的覆盖次数K。 第一次写标记永久化,#define ma
阅读全文
摘要:题链 我们发现答案一直在减小,我们启发式合并,对每一个值开平衡树。那么是O(NlogN^2) 然而,我懒得写离散化了,所以MAP,莫名多一个log 大家要知道 LOJ 是非常快的~ 无力吐槽。
阅读全文
摘要:原题点这里 我们发现这道题可以用树状数组套权值线段树(主席树的一些优化) (不会点这里) 我感觉我这样写下去朴素的主席树要不会写了。 我们发现一个点对答案的贡献有两部份,在其之前比其大的,在其之后比他小的。 我们每次删除一个点,把其对答案的贡献减去就好了。 我们考虑一下这样所费的空间,我们知道删除时
阅读全文
摘要:原题这里 这题要用到树链剖分 不会树剖的同学点这里 把边权变为其dep比较深的那个点的点权,然后树剖(注意LCA的权值是不能算进去的。) //第一次树剖套线段树,以前都是套树状数组的。
阅读全文
摘要:SOL 奇奇怪怪的题目,我们发现我们的值对答案的贡献,发现其的大于281的质因数对答案无贡献,那么我们可以用一个60大小的数组来表示一个数。一个区间的答案就是其积的欧拉函数值,那么我们用树状数组维护。(常数有点大)
阅读全文
摘要:题目描述 SOL 奇奇怪怪的码农题。 我们考虑是一颗树怎么做,我们发现我们可以离线做,把车的限速排序,依次处理,我们首先是树剖,把边分成两类,最高速度小于车速和大于车速的。每次做之前先把最高速度小于当前车速的加到另一类。强行树剖维护。至于多出来的那一条边,我们记其练了A , B,记我们原来的始末位置
阅读全文
摘要:我们有时候遇到这样一类题目,让我们维护树上路径的某些信息,这个时候发现我们无法用线段树或者树状数组来维护这些信息,那么我们就有着一种新的数据结构,树剖:将一棵树划分成若干条链,用数据结构去维护每条链,复杂度为O(logN)。 剖分方法: 盲目剖分 随机剖分 启发式剖分综合比较,启发式剖分是剖分时的最
阅读全文
摘要:题目描述 lxhgww最近收到了一个01序列,序列里面包含了n个数,这些数要么是0,要么是1,现在对于这个序列有五种变换操作和询问操作: 0 a b 把[a, b]区间内的所有数全变成0 1 a b 把[a, b]区间内的所有数全变成1 2 a b 把[a,b]区间内的所有数全部取反,也就是说把所有
阅读全文
摘要:我们知道我们可以通过主席树来维护静态区间第K大值。我们又知道主席树满足可加性,所以我们可以用树状数组来维护主席树,树状数组的每一个节点都可以开一颗主席树,然后一起做。 我们注意到树状数组的每一棵树都和前一颗树没有关系,so,并不需要可持久化,一个朴素的权值线段树就可以啦。 我们知道普通的线段树是刚开
阅读全文
摘要:NOIP ,发条题解增加rp; 树状数组维护区间和。 令 原数组为a i a1 i为 ai 到 an的共同增量, 那么 我们要求区间和 等价于求 1到x的和 (可以ask r-ask(l-1)); ask x =a1+a2+..ax+x*a1 1+(x-1)*a1 2+..a1 x 那么我们维护 a
阅读全文