
【数据结构】Treap
文章平均质量分 63
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ3224】【TYVJ1728】普通平衡树
【题目链接】点击打开链接【思路要点】本题包含了平衡树最基本的操作。是任何学习平衡树都应当先做一遍的题。笔者实现了四种平衡树,Splay、Treap、替罪羊树和非旋转式Treap(以及其可持久化)。【代码】Splay/*Splay Tree Version*/#includeusing namespace std;原创 2018-01-14 19:53:39 · 691 阅读 · 0 评论 -
【BZOJ2658】【ZJOI2012】小蓝的好友(mrx)
【题目链接】点击打开链接【思路要点】求解不含资源点的矩形个数,用总共的矩形个数减之,得到答案。考虑扫描线,从上至下枚举矩形的下边界,记每一个横坐标\(x\)的资源点最近一次出现在\((x,Depth_x)\)处。维护一棵笛卡尔树(Treap),使得父节点的\(Depth\)始终大于子节点的\(Depth\),记每个点的子树大小为\(Size_x\)。此时,有\(Ans=\sum_{i=1}^{C}...原创 2018-02-25 14:12:23 · 362 阅读 · 0 评论 -
【BZOJ3600】没有人的算术
【题目链接】 点击打开链接 【思路要点】 利用 TreapTreapTreap 对产生的新数动态标号,再用线段树维护区间最值即可。 时间复杂度 O(MLogN+MLogM+N)O(MLogN+MLogM+N) O(MLogN+MLogM+N) 。 【代码】 #include<bits/stdc++.h>using na...原创 2018-09-05 16:21:40 · 441 阅读 · 0 评论 -
【BZOJ3682】Phorni
【题目链接】 点击打开链接 【思路要点】 利用 TreapTreapTreap 对新产生的后缀动态标号,维护一棵后缀平衡树,再用线段树支持修改即可。 时间复杂度 O(MLogN+MLogM+N)O(MLogN+MLogM+N) O(MLogN+MLogM+N) 。 【代码】 #include<bits/stdc++.h>...原创 2018-09-05 19:29:07 · 264 阅读 · 0 评论 -
【BZOJ3946】无聊的游戏
【题目链接】 点击打开链接 【思路要点】 记 aiaia_i 表示 sisis_i 和 si−1si−1s_{i-1} 的 lcplcplcp 的长度,对一段区间 [l,r][l,r][l,r] 增加一个前缀,那么 al+1,al+2,...,aral+1,al+2,...,ara_{l+1},a_{l+2},...,a_r 都会对应增加这个前缀的长度, al...原创 2018-09-06 12:52:12 · 1051 阅读 · 3 评论