明天就是一轮省选了啊。。这多是退役前的最后一篇博文了吧(若是心情很差怕是连游记都会咕)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级别,因此考场上若是条件容许的话说不定能够救你一命~