Количество учеников с лучшими оценками и низким рейтингом джи - PullRequest
1 голос
/ 08 ноября 2011

Нам дают n студентов с оценками cgpa (колледж) и jee (ранг в вступительном экзамене) каждого студента. Для каждого учащегося мы должны рассчитать количество учеников, которые имеют более высокий рейтинг качества, но худший рейтинг джи.

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

для каждого я, мы должны рассчитать нет. из j, для которых xj> xi и yj> yi (худший ранг означает больший ранг.)

Я мог бы придумать следующий алгоритм nlogn- Сортировать их по убыванию cgpa. Теперь начните сканирование слева. Сохраняйте отсканированные до сих пор ученики в сбалансированном бинарном дереве (в соответствии с их рангом джи). Для следующего ученика просто выясните число учеников, уже отсканированных с большим рангом, запросив сбалансированное двоичное дерево.

Я не знаю, как поддерживать сбалансированный BST, в котором я могу вернуть нет. элементов меньше k в O (logn). Нам нужно поддерживать нет. узлов в поддереве на каждом узле. Но как это сделать?

Либо помогите с вышеуказанным, либо предоставьте другой алгоритм, возможно, DP.

1 Ответ

1 голос
/ 08 ноября 2011

Если вы не хотите кодировать сбалансированное двоичное дерево, Binary Indexed Tree (BIT или Fenwick Tree) - это DS, на который вы должны обратить внимание. Это может быть закодировано в <10 простых строк. <a href="http://yellowagony.blogspot.com/2011/02/prefix-sums-fenwick-trees.html" rel="nofollow"> Здесь - это запись в блоге, которую я написал на деревьях Фенвика, которая может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...