成绩更好,成绩更低的学生人数

时间:2011-11-08 08:00:41

标签: algorithm tree dynamic-programming

我们给每位学生提供cgpa(大学成绩)和jee等级(入学考试排名)的n名学生。 对于每个学生,我们必须计算出具有更好的cgpa但是更糟糕的jee等级的学生数量。

(x1,y1),(x2,y2)...(xi,yi)......(xn,yn)

对于每个我,我们必须计算不。 j的xj> xi和yj> yi(等级越高意味着排名越高。)

我可以提出以下nlogn算法 -     对它们进行排序,减少cgpa。     现在开始从左侧扫描。     到目前为止,用平衡的二叉树(根据他们的jee等级)保持学生的扫描。     对于下一个学生,只需通过查询平衡二叉树,找出已经扫描过更高等级的学生。

我不知道如何保持平衡的bst,我可以不返回。 O(logn)中小于k的元素。我们需要维持不。每个节点的子树中的节点数。但是怎么做呢?

要么提供上述帮助,要么提供不同的算法,也许是DP。

1 个答案:

答案 0 :(得分:1)

如果您不想编码平衡二叉树,则二进制索引树(又名BIT或Fenwick树)是您应该查看的DS。它可以用< 10条简单的线条。 Here是我在Fenwick Trees上写的一篇博文,可能有所帮助。