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

Автор SEFI2, 10 лет назад, По-русски

Доброго времени суток!

Помогите решить такую задачу:

Есть M торговцев. Каждый торговец торгует начиная с города Li до Ri. Свой товар торговец начинает торговать с города Li за цену Xi, и с каждым городом цена товара увеличивается на 1 единицу, т.е В городе Li за Xi , в городе Li+1 за Xi+1, в городе Ri за Xi+ Ri Li+1.

И для каждого города нужно определить максимальную цену товара за всю историю.

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

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

Советую просто научиться дереву отрезков. Нажми сюда

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

    Если все стоимости нужно узнать только в конце, то дерево отрезков не нужно

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

      Можно по подробнее ???

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

        Назовем побочной ценой число pi - i, где pi — это цена товара в городе номер i. Теперь мы можем заменить заданные присвоения на присвоения некоторого числа на отрезке побочных цен.

        Пусть теперь у нас есть запросы присвоить на отрезке [L, R] побочную цену y. Тогда создадим события начала этой побочной цены и конца. Отсортируем их и пробежимся сканлайном. Пробегаясь по отсортированным событиям, мы можем для каждого города посчитать максимальную побочную цену в нем: будем хранить стек с поддержкой максимума и при начале очередного отрезка будем класть y в стек, при его конце — удалять вершину стека. Теперь мы можем для каждого города посчитать максимальную побочную цену, прибавить к ней i и получить тем самым искомую.

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

        Можно идти слева направо, поддерживая set активных торговцев, отсортированный по Xi - Li

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

        Ой, нельзя:) я не о той задаче подумал.

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

А как вообще решается задача, это же не простая задача RMQ на отрезке.

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

    В данном случае лучше построить дерево для b[i] = a[i] — i. Тогда мы имеем обычные присвоения на отрезке.

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

спасибо всем большое! Решил!!!