兹瓷查rank和kth的STL平衡树

兹瓷查rank和kth的STL平衡树

明天就是一轮省选了啊。。这多是退役前的最后一篇博文了吧(若是心情很差怕是连游记都会咕)node

众周所知stl中有一个依靠红黑树实现的nb数据结构-std::set数据结构

可是这玩意儿没有维护siz域,也就是不能作相似于询问rank(i)(查询\(i\)的排名)和kth(i)(查询排名为\(i\)的数)less

可是stl中还有一个更nb的东西-pb_ds中的平衡树spa

定义的话首先要引用code

#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>

而后class

__gnu_pbds::tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> s;

就能够啦date

能够使用:sso

s.order_of_key(i)来获得值为\(i\)的数的排名引用

*s.find_by_order(i)来获得排名为\(i\)的数数据

复杂度比手写的慢不少,但大概仍是log级别,因此考场上若是条件容许的话说不定能够救你一命~

相关文章
相关标签/搜索