fhq专题

FHQ Treap模版(luogu P3369)

FHQ Treap模版(自用),带注释 #include<bits/stdc++.h>using namespace std;const int N=1e5+10;int n,root,idx;struct node{int l,r;int val,key,size;}tr[N];int getnew(int v){tr[++idx].val=v;//权值tr[idx].key=rand(

【数据结构】FHQ-Treap

因为想要学可持久化平衡树,但是之前用平衡树基本都是splay这种需要旋转的,不利于可持久化,所以今天来学一下fhq-treap这种不需要旋转的平衡树 fhq-treap是一种基于分裂(split)和合并(merge)的一种treap,下文将会对其各个操作是如何利用分裂与合并进行详细说明 定义 下方代码全部基于以下定义: int root, idx; // 分别表示根结点编号和当前用到哪个结

无旋平衡树 fhq treap

普通平衡树 您需要写一种数据结构,来维护一些数,其中需要提供以下操作: 插入一个整数 x x x。删除一个整数 x x x (若有多个相同的数,只删除一个)查询整数 x x x 的排名(排名定义为比当前数小的数的个数 + 1 +1 +1。若有多个相同的数,因输出最小的排名)查询排名为 x x x 的数求 x x x 的前驱(前驱定义为小于 x x x,且最大的数)求 x x x