随笔分类 - I-数据结构-平衡树
摘要:Link: BZOJ 3720 传送门 Solution: 由于强制在线+新添节点,主席树难以进行更新 这时考虑在树上分块,具体内部的操作和在序列上相同 每次通过判断父节点块的大小判断是否要新开一块 注意每一块在树上都是连续的,这样在查询时子树时保证最后全是整块 不过由于上一条特性导致遇到菊花图就将
阅读全文
摘要:Link: BZOJ 4071传送门 Solution: 首先算出能提前算的贡献 $K=1$:肯定选中间的点,小学数学 $K=2$:对于每对$(x,y)$一定选离$(x+y)/2$近的桥 也就是说将$(x,y)$按$(x+y)/2$的值排序后一定恰有一个分割点使得两边选择不同的桥! 考虑如何如何快速
阅读全文
摘要:Link: BZOJ 1208 传送门 Solution: 求前驱后继,很明显的平衡树操作 其实$set$完全可以做,主要是为了复习下$Treap$结果调了好久…… 注意:在写平衡树删除时一定要记得考虑删除数不存在的情况 特别是$Treap$,如果访问到空要直接返回否则死循环…… Code:
阅读全文
摘要:Link: BZOJ 1500 传送门 Solution: 可能平衡树维护序列的所有操作都在这了吧…… 对序列的维护$fhq treap$和$Splay$都能做 有几个注意点: 1、维护序列时始终记得第$k$大指的是序号,与权值无关 2、注意对0的初始化,毕竟如果无叶子结点时会用到 3、如果数据总量
阅读全文
摘要:Link: BZOJ 1058 传送门 Solution: 为了这道题今天下午一直都在和常数大战…… 1、对于询问1,我们记录每个数末位置的数$T[i]$和初始位置$S[i]$ 用平衡树维护所有差值,对于操作$i,k$:删除$S[i+1]-T[i]$,增加$x-T[i]$和$x-S[i+1]$ 2、
阅读全文
摘要:Link: BZOJ 1861 传送门 Solution: 一道平衡树裸题调了两小时真是** 操作都比较常规: 1、$Top,Bottom$操作 先将$x$转到根节点,分情况讨论将其左/右子树合并到另一边去 2、$Insert$操作 其实完全没有必要先删除再插入,直接将$x$与其前驱/后继的信息交换
阅读全文
摘要:Link: BZOJ 3223 传送门 Solution: $Splay$对序列操作的模板题 核心思想就是将$L-1$移到根,$R+1$移至$L-1$的下方,从而约束出区间$[L,R]$进行操作 对于此题仅要求将区间翻转,因此只要将左右子树交换即可 但同时类似于线段树要打上懒惰标记来保证复杂度,每次
阅读全文

浙公网安备 33010602011771号