随笔分类 -  线段树

摘要:题解: 这题有点卡常数(自己的常数大) 每30位压成一个数 思路1: 每次操作拆成最多两个位置的操作 每加一次最多会进1 每减一次最多会退1 然后用线段树维护最近的非0位和非满位 然后就是区间赋值和单点修改 好难写没写出来QWQ 思路2: 分两个数组记录加操作(A)和减操作(B) 用set维护所有的 阅读全文
posted @ 2018-03-13 19:32 ws_zzy 阅读(185) 评论(0) 推荐(0)
摘要:题解:用树链剖分来维护树链剖分 令d[x]=size[heavyson[x]]-size[lightson[x]] 当d[x]<0时轻重儿子关系改变 用数据结构维护d[x]并找到这些位置改变即可 时间复杂度O(不会分析) 阅读全文
posted @ 2018-03-11 21:47 ws_zzy 阅读(589) 评论(0) 推荐(0)
摘要:题解:二分一个答案,<=mid设成0,>mid设成1 然后验证,每次排序相当于把两(一)段区间赋成0和1 阅读全文
posted @ 2018-03-08 21:41 ws_zzy 阅读(144) 评论(0) 推荐(0)
摘要:题解:线段树 一开始维护错区间和,然后GG,不要凭感觉 没把调试用的函数注释掉T了一发 阅读全文
posted @ 2018-03-03 20:58 ws_zzy 阅读(189) 评论(0) 推荐(0)
摘要:题解:线段树 3操作的l,r没赋初始值竟然过了样例??? 阅读全文
posted @ 2018-03-02 15:06 ws_zzy 阅读(138) 评论(0) 推荐(0)
摘要:题解: SB的我打了无旋Treap,然后在洛谷上光荣的T了 BZOJ极限卡时A了 (每个初始位置后面加入的数)的影响是可以直接算的,然后初始位置之间的影响用平衡树(线段树)来维护即可 阅读全文
posted @ 2018-03-01 22:47 ws_zzy 阅读(146) 评论(0) 推荐(0)
摘要:题解:每个炸弹爆炸影响一个区间,通过二分查找找到 若A爆炸炸到B则连一条A到B的边 线段树优化建图 缩点+DP 因为每个炸弹的答案一定是一个区间,所以记录每个节点的左端点和右端点 合并时取最值 反思:思维定式,以为求解可达点个数不能合并 阅读全文
posted @ 2018-02-26 20:58 ws_zzy 阅读(244) 评论(0) 推荐(0)
摘要:题解:历史最值线段树 参见吉司机的论文 还是不熟,自己打打不出来 维护当前和历史两套标记,最大值,加法标记,减法标记 每到一个节点先pushdown(不知道为什么) 正确性不是很理解QWQ 还是自己太弱了 阅读全文
posted @ 2018-02-21 11:36 ws_zzy 阅读(247) 评论(0) 推荐(0)
摘要:题解: 长度定为3 线段树维护区间hash值 从左向右处理,依次在数轴上插入处理的元素; 如果当前数轴不对称,则缺失的那个元素一定在后面出现 阅读全文
posted @ 2018-02-20 18:06 ws_zzy 阅读(187) 评论(0) 推荐(0)
摘要:题解:树链剖分一下 对线段树每个节点维护双堆,支持插入删除 对于每一条请求,给这个请求没经过的点加入这个值,共logn个区间 查询就是线段树上的单点查询 阅读全文
posted @ 2018-02-20 18:03 ws_zzy 阅读(153) 评论(0) 推荐(0)
摘要:题解: 解法1: 树链剖分一下,对每条链建立一颗Splay 以宗教为第一关键字,深度为第二关键字建立 查询相当于Splay的一个区间 修改相当于删除一个节点,加入一个节点 O(nlog^2n) O(n); 解法2: 树链剖分一下,对每条链建立maxc棵权值线段树,动态开点 O(nlog^2n) O( 阅读全文
posted @ 2018-02-20 18:00 ws_zzy 阅读(137) 评论(0) 推荐(0)
摘要:题解:整体二分 以时间为关键字进行整体二分 用线段树维护区间和 Woc这题居然爆int,以后注意爆int的可能 阅读全文
posted @ 2018-02-20 12:31 ws_zzy 阅读(165) 评论(0) 推荐(0)
摘要:题解:Dp+线段树维护所有决策 f[i][j]表示第j个基站建在第i个位置,i之前的村庄与建基站的总费用的最小值 以j为阶段 枚举i,维护所有决策f[x][j-1]; 当一个村庄q不能被i覆盖了,那么在1~p之间建立基站的决策费用要+c p为q左边第一个不能覆盖q的村庄 复杂度O( nklogn); 阅读全文
posted @ 2018-02-20 12:28 ws_zzy 阅读(164) 评论(0) 推荐(0)
摘要:题解: dep[LCA(a,b)]等价于把a到根路径+1,然后询问b到根路径的权值 按左右端点分别排序求出值后作差就可以了 分块TLE了QWQ LCT代码 分块代码 阅读全文
posted @ 2018-02-19 20:27 ws_zzy 阅读(153) 评论(0) 推荐(0)
摘要:题解:动态树,维护Splay最深的被标记过的点 每个询问先Access(x); 当然用树链剖分也可以 阅读全文
posted @ 2018-02-19 20:05 ws_zzy 阅读(146) 评论(0) 推荐(0)
摘要:题解: 树剖,线段树维护区间颜色段数 记录两端点的颜色,做到O(1)合并 问题: 非递归建树实现 阅读全文
posted @ 2018-01-02 21:29 ws_zzy 阅读(167) 评论(0) 推荐(0)