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

Автор mostyka, история, 5 лет назад, По-русски

В блоге обсуждалась K-я порядковая статистика, но решение и код были приведены только для персистентного ДО за log. Как решать для неперсистентного ДО за log^2 или алгоритмом МО?

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

»
5 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

Стандартные вопросы цианов

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    если уж стандартные, то ответом не поделитесь?)

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Могу поделиться стандартным ответом цианам
»
5 лет назад, # |
Rev. 3   Проголосовать: нравится +6 Проголосовать: не нравится

Строишь на значениях в каждой вершине дерева отрезков еще одно дерево отрезков Чтобы ответить на запрос просто параллельно спускаемся по O(log) деревьев отрезков

Как итог O(log^2) на запрос

С алгоритмом МО гораздо проще. Ты пишешь обычного МО, но чтобы отвечать на запрос будем поддерживать sqrt декомпозицию на отрезке числовой прямой.

В итоге имеем O(n * sqrt(n) + q * sqrt(n))

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    а вообще зачем решать что-то настолько бесполезное...?

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

Вообще можно и за лог без персистентности: https://mirror.codeforces.com/blog/entry/59214

»
5 лет назад, # |
Rev. 4   Проголосовать: нравится 0 Проголосовать: не нравится

Ну вот сразу на ум пришла идея хранения в вершине дерева отрезков ordered_set чисел. Отвечать на запросы очень просто — спускаемся и используем find_by_order. Про ordered_set: https://mirror.codeforces.com/blog/entry/11080

P.S: получим O(log^2) на каждый запрос.

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    так у нас запросный отрезок может состоять из нескольких вершин дерева отрезков