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

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

Не могу решить задачу. Подскажите какую нибудь идею. Как решить с помощью дерева отрезков. Заранее спасибо.

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

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

Как считать ответ на отрезке [i, j]?

Если ai = aj, то ответ: j - i + 1 (потому что числа упорядочены).

Иначе: ответ — максимум из:

  • количества чисел, равных a[i], находящихся на позициях >= i (считается за O(1))
  • количества чисел, равных a[j], находящихся на позициях <= j (считается за O(1))
  • количества чисел, одновременно строго больших a[i] и строго меньших a[j] (считается, например, деревом отрезков за O(logN))

На всякий случай: кот, код.

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

На будущее: название записи должно быть, во-первых, информативным, во-вторых, не кричащим (бывают исключения). Я бы назвал Вашу запись как-то так: "E-Olymp 4081 (Частые значения — 2). Нужна помощь с решением."