茲瓷查rank和kth的STL平衡樹


茲瓷查rank和kth的STL平衡樹

明天就是一輪省選了啊。。這可能是退役前的最后一篇博文了吧(如果心情不好怕是連游記都會咕)

眾周所知stl中有一個依靠紅黑樹實現的nb數據結構-std::set

但是這玩意兒沒有維護siz域,也就是不能做類似於詢問rank(i)(查詢\(i\)的排名)和kth(i)(查詢排名為\(i\)的數)

但是stl中還有一個更nb的東西-pb_ds中的平衡樹

定義的話首先要引用

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

然后

__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級別,所以考場上如果條件允許的話說不定可以救你一命~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM