随笔分类 -  数据结构 - Splay

摘要:题目大意:维护一个长度为 N 的序列,支持单点插入,单点询问。 注意事项如下: build 函数中要记得初始化 fa。 插入两个端点值。 代码如下 cpp include define pb push_back define mp make_pair define all(x) x.begin(), 阅读全文
posted @ 2019-03-28 15:09 shellpicker 阅读(255) 评论(0) 推荐(1)
摘要:题目大意:维护一个序列,支持区间插入,区间删除,区间翻转,查询区间元素和,查询区间最大子段和操作。 题解:毒瘤题。。。QAQ打完这道题发现自己以前学了一个假的 Splay。。 对于区间操作,用 splay 处理是比较优先的选择。取出一段区间 [l,r] 的方式为:将 l 1 旋转到根节点,将 r+1 阅读全文
posted @ 2019-03-25 20:33 shellpicker 阅读(211) 评论(0) 推荐(0)
摘要:题目大意:利用 splay 维护序列,支持区间反转操作。 题解:这里用 splay 维护的是下标的偏序关系,最后查询时也是按照下标从小到大进行查询。注:初始化引入两个极值点的作用是避免考虑 l 1,r+1 越界带来的不必要的麻烦。 代码如下 cpp include using namespace s 阅读全文
posted @ 2019-03-25 12:54 shellpicker 阅读(113) 评论(0) 推荐(0)
摘要:题目大意:给定 N 个点的图,点有点权,初始有一些无向边,现在有 Q 个询问,每个询问支持动态增加一条无向边连接两个不连通的点和查询第 X 个点所在的联通块中权值第 K 大的是哪个点。 题解:学会了平衡树的启发式合并。 以每个点建立一棵平衡树,需要加边时则合并两个点对应的平衡树,启发式的思想在于合并 阅读全文
posted @ 2019-03-03 18:38 shellpicker 阅读(222) 评论(0) 推荐(0)
摘要:Splay 均摊复杂度证明见此处 $\rightarrow$ "链接" 代码如下 阅读全文
posted @ 2018-11-11 13:50 shellpicker 阅读(190) 评论(0) 推荐(0)