Блог пользователя acc1

Автор acc1, 13 лет назад, По-английски

Can anyone tell me where to find ..really nice article on it....


  • Проголосовать: нравится
  • -4
  • Проголосовать: не нравится

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Hey)what do u need exactly?are u looking for solution for problem like this one?
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

AFAIK it's a very simple data structure: it can PUSH number in O(log N), and POP_MEDIAN in O(log N). To create it, we can just create two balanced min-heaps (i.e. standard heaps, that can PUSH element in O(log N) and POP_MINIMUM in O(log N)), such that the lowest half of elements is saved in the first heap, and the second half - in the second heap. This allows us to find median quickly: the median is the minimal element of the second heap.

  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Now, I am wondering can I use STL in C++ for the task rather writing my own Heap...!

    Now I know there is priority_queue available. But it implements either min heap or max heap.

    How to bring them together and make something like Median Heap?

    Changing the comparison function may be the option......I dont know..U tell me ......

    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      >> Now I know there is priority_queue available. But it implements either min heap or max heap.

      Right. If you analyse e-maxx 's comment then you would realise that median heap can be implemented by maintaining two heaps and doing some operations to balance the number of elements in these two heaps.


      You may test your implementation in this problem:
      www.spoj.pl/problems/WEIRDFN