我想要一个数据结构,我想在其中以log(n)的时间插入元素,并且每次插入后都应在ds中对元素进行排序。我可以为此使用多集。
此后,我想在log(n)时间内再次找到严格小于给定数量的元素数量。是的,也存在重复项,需要加以考虑。例如,如果查询元素为5,并且ds包含{2,2,4,5,6,6,8,8},则答案将为3(2,2,4),因为这3个元素严格小于5 >
我本可以使用多重集,但是即使使用upper_bound,我也必须使用在线性时间内运行的距离方法。我如何使用c ++ stl有效地实现这一目标。我也不能使用
答案 0 :(得分:3)
您需要的数据结构是订单统计树:https://en.wikipedia.org/wiki/Order_statistic_tree
STL没有一个,而且不是很常见,因此您可能必须自己动手。您可以在Google中找到代码,但是我不能担保任何特定的实现。