【数据结构】Splay
文章平均质量分 88
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ3224】【TYVJ1728】普通平衡树
【题目链接】 点击打开链接 【思路要点】 本题包含了平衡树最基本的操作。是任何学习平衡树都应当先做一遍的题。笔者实现了四种平衡树,Splay、Treap、替罪羊树和非旋转式Treap(以及其可持久化)。 【代码】 Splay/*Splay Tree Version*/ #include using namespace std;原创 2018-01-14 19:53:39 · 660 阅读 · 0 评论 -
【BZOJ3223】【TYVJ1729】文艺平衡树
【题目链接】 点击打开链接 【思路要点】 使用可以打标记的Splay来实现区间翻转,时间复杂度\(O(MLogN)\)。代码过于陈旧,风格较丑。 【代码】 #include using namespace std; #define MAXN 100005 struct Node { int father, child[2], size,原创 2018-01-14 20:09:05 · 356 阅读 · 0 评论 -
【BZOJ1500】【NOI2005】维修数列
【题目链接】 点击打开链接 【思路要点】 使用Splay维护多个标记进行各种区间操作,代码实现较为困难。内存限制64MB,注意内存回收,避免空间超限。 【代码】 #include using namespace std; #define MAXN 500005 #define MAXIN 4500005 struct Node { i原创 2018-01-15 09:24:18 · 331 阅读 · 0 评论 -
【BZOJ3963】【WF2011】MachineWorks
【题目链接】点击打开链接【思路要点】按照\(G_i\)对机器排序,斜率优化DP即可。时间复杂度\(O(NLog{N})\)。也可以按\(D_i\)排序,用Splay或CDQ分治支持询问。【代码】#include<bits/stdc++.h> using namespace std; #define MAXN 100005 struct info {long long d, p, r, ...原创 2018-03-25 17:01:21 · 286 阅读 · 0 评论 -
【BZOJ1552】【Cerc2007】robotic sort
【题目链接】 点击打开链接 【双倍经验链接】 【BZOJ3506】【CQOI2014】排序机械臂 【思路要点】 将权值当做下标,我们需要实现的是查询一个节点在数组中的排名,以及翻转数组的一个区间。 用Splay维护即可,时间复杂度O(NLogN)O(NLogN)O(NLogN)。 【代码】 #include&lt...原创 2018-07-03 11:11:53 · 223 阅读 · 0 评论 -
【BZOJ3506】【CQOI2014】排序机械臂
【题目链接】 点击打开链接 【双倍经验链接】 【BZOJ1552】【Cerc2007】robotic sort 【思路要点】 将权值当做下标,我们需要实现的是查询一个节点在数组中的排名,以及翻转数组的一个区间。 用Splay维护即可,时间复杂度O(NLogN)O(NLogN)O(NLogN)。 【代码】 #inc...原创 2018-07-03 11:13:44 · 209 阅读 · 0 评论