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

Автор EgorGandziy, история, 3 года назад, По-русски

Я не очень опытный в программировании, подскажите какой-то алгоритм, с помощью которого можно вычислять максимальную сумму на отрезке в массиве, например: Данн массив v; Нужно найти отрезок [l, r] на котором произведение всех элементов массива(v[l]...v[r]) на этом отрезке будет максимальным.

помогите, пожалуйста

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

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

Для вычисления максимальной суммы на отрезке можно за квадратичную асимптотику просто перебрать все возможные суммы в массиве. Или за линейную асимптотику использовать метод двух указателей. Для решения задачи будем идти по массиву прибавляем к сумме значение a[r] (r — правый указатель), если сумма станет больше текущего ответа, то обновляешь ответ, если сумма стала меньше нуля, то левый указатель приравниваешь к правому, а сумму приравниваешь к нулю. Подробнее об этом методе можно узнать в EDU на Codeforces.