洛谷传送门:【模板】可持久化平衡树
题意
您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作(对于各个以往的历史版本):
1.插入x数
2.删除x数(若有多个相同的数,因只删除一个,如果没有请忽略该操作)
3.查询x数的排名(排名定义为比当前数小的数的个数+1。若有多个相同的数,因输出最小的排名)
4.查询排名为x的数
5.求x的前驱(前驱定义为小于x,且最大的数,如不存在输出-2147483647)
6.求x的后继(后继定义为大于x,且最小的数,如不存在输出2147483647)
和原本平衡树不同的一点是,每一次的任何操作都是基于某一个历史版本,同时生成一个新的版本。(操作3, 4, 5, 6即保持原版本无变化)
每个版本的编号即为操作的序号(版本0即为初始状态,空树)
数据范围
1≤n≤5⋅105 1 ≤ n ≤ 5 ⋅ 10 5 ,