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

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

Доброго времени суток всем кто читает этот пост. Читая одну книжку по ДП столкнулся с очень сложной проблемой. Для того чтобы эффективно решать одну задачу, нужно за линейное время находить для массива A(N) L[i] — количество подряд идущих чисел до i-го которые больше или равны A[i]. Автор толком не показывает как это сделать, но говорит что стек поможет. Я думал-думал, ничего не выходит придумать. Помогите пожалуйста, объясните как же за линию такой массив насчитать и реально ли это вообще.

Пример

A = {3 1 2 4 5 3 4}

L = {0 1 0 0 0 2 0}

Для тех кто не очень возможно понял суть задачи — для каждого i-го числа мы встаем в позицию i-1 и пока это число >= a[i] то прибавляем 1 в L[i](но это за квадрат решение, а нам линия нужна).

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

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

можно узнат кокую кинигу ты читаеш.

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

Вроде можно и без стека за линию. Код.