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

Автор EgorGandziy, история, 12 месяцев назад, По-русски

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

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

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

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

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

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

    а для максимального произведения на отрезке так же делать?

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

      Для произведения тоже можно использовать этот метод, но стоит учитывать нули и количество отрицательных чисел на отрезке, а также не словить переполнение.