随笔分类 - 数据结构--平衡树
该文被密码保护。
摘要:题目 P5338 [TJOI2019]甲苯先生的滚榜 分析 平衡树模板题。查询一个数的排名。 代码 #include<bits/stdc++.h> using namespace std; template <typename T> inline void read(T &x){ x=0;char
阅读全文
摘要:题目 P5306 [COCI2019] Transport 分析 点分治+平衡树。 首先,我们很容易想到这里要使用点分治,然后我们可以考虑如何拼接路径。 发现因为这道题这样的话是有方向的,于是可以考虑维护两个数据结构,一个是从这个点出发,一个是在这个点结束。 那么具体怎么维护呢?我们发现对于一条路径
阅读全文
摘要:题目 P4175 [CTSC2008]网络管理 树上单点修改,查询路径第 k 大。 解答 这道题做法很多,有 树剖+线段树+平衡树+二分 的,也有 树剖+可持久化线段树+树状数组 的,也有 可持久化线段树+差分+树状数组 的,还有就是 整体二分+树剖 的。 复杂度都是几个 \(log\) 的做法。
阅读全文
摘要:P1110 [ZJOI2007]报表统计 动态插入,然后询问相邻差的绝对值最小值的全局值域相邻差的绝对值最小值。 直接分别用两个平衡树维护即可。 题解代码: #include<bits/stdc++.h> #include<ext/pb_ds/assoc_container.hpp> #includ
阅读全文
摘要:P4008 [NOI2003] 文本编辑器 动态插入字符,动态删除字符,输出一个区间的字符串。 很明显可以直接用平衡树维护,当然也可以分块。 平衡树可以用 FHQTreap或者Splay ,这里用的是前者。 每次操作都可以看成分裂然后合并即可。 代码: #include <bits/stdc++.h
阅读全文
摘要:P5350&P5586 序列 P5350&P5586 序列 区间覆盖,区间求和,交换两个区间,区间复制后覆盖,区间加,区间翻转。 可以使用 \(FHQ Treap\) 来解决。 区间翻转,区间加,区间覆盖,区间求和常规操作,标记维护一下就行了,然后区间交换就是相当于 split 两个区间出来再合并就
阅读全文

浙公网安备 33010602011771号