前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >兹瓷查rank和kth的STL平衡树

兹瓷查rank和kth的STL平衡树

作者头像
attack
发布2019-04-17 16:19:51
8290
发布2019-04-17 16:19:51
举报
文章被收录于专栏:数据结构与算法

兹瓷查rank和kth的STL平衡树

明天就是一轮省选了啊。。这可能是退役前的最后一篇博文了吧(如果心情不好怕是连游记都会咕)

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

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

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

定义的话首先要引用

代码语言:javascript
复制
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>

然后

代码语言:javascript
复制
__gnu_pbds::tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> s;

就可以啦

可以使用:

s.order_of_key(i)来得到值为\(i\)的数的排名

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

复杂度比手写的慢很多,但大概还是log级别,所以考场上如果条件允许的话说不定可以救你一命~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 兹瓷查rank和kth的STL平衡树
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档