РУҚА
27

Решение: Максимальная разность сумм

ЕГЭ · Информатика · Задание 27 · Динамическое программирование
ВысокаяФИПИBDD715Короткий ответ≈ 15 минутРазбор в 4 шага
Условие

Пусть $S$ — последовательность из $N$ целых чисел, пронумерованных подряд начиная с 1. Обозначим $S(L, R)$ подпоследовательность, состоящую из идущих подряд элементов, входящих в $S$, начиная с элемента с номером $L$ и заканчивая элементом с номером $R$. Требуется найти такие значения номеров элементов $L$, $M$, $R$, где $0 < L < M < R - 1$, чтобы разность суммы элементов подпоследовательности $S(L, M)$ и суммы элементов подпоследовательности $S(M + 1, R)$ была максимальна. Даны два входных файла — файл A и файл B. В первой строке каждого файла содержится число $N$ ($5 \leq N \leq 10\,000\,000$), далее записаны $N$ целых чисел, каждое по модулю не превышает 1000. Для файла B нельзя использовать переборный алгоритм, вычисляющий разность для всех возможных вариантов.

Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

Решение по шагам

4 шага
1

Обозначим через $P_i$ сумму первых $i$ элементов последовательности. Тогда сумма $S(L, M)$ равна $P_M - P_{L-1}$, а сумма $S(M+1, R)$ равна $P_R - P_M$.

$$D = (P_M - P_{L-1}) - (P_R - P_M) = 2P_M - P_{L-1} - P_R$$
2

Для каждого разделителя $M$ требуется выбрать минимальное значение $P_{L-1}$ среди индексов $0 \leq L-1 < M$ и минимальное значение $P_R$ среди индексов $M+2 \leq R \leq N$.

3

Минимальные значения префиксных сумм слева поддерживаются при проходе слева направо. Минимальные значения $P_R$ справа можно получить массивом суффиксных минимумов или проходом справа налево.

Для каждого $M$ вычисляется кандидат $2P_M - \min(P_0,\ldots,P_{M-1}) - \min(P_{M+2},\ldots,P_N)$, после чего выбирается максимум. Алгоритм работает за $O(N)$ времени и использует $O(N)$ памяти либо $O(1)$ дополнительной памяти при двух проходах.

Ответ

Числовые ответы определить невозможно: файлы A и B в предоставленных материалах отсутствуют.

Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.

Где здесь ошибаются

Разрешают правой части состоять из одного элемента, хотя требуется $R > M + 1$.

Используют минимум префиксной суммы с недопустимым индексом.

Перебирают все тройки $L$, $M$, $R$, получая слишком высокую сложность.

Путают разность сумм с суммой модулей элементов.

Закрепить приёмВ теме «Динамическое программирование» ещё 71 задача — с ответом и таким же разбором.
Тренироваться

Как решать задание 27 ЕГЭ, информатика

Разбор этой задачи разложен на 4 шага: видно, откуда берётся каждое число и где теряется балл. Ответ приведён рядом с выкладками, а не вместо них.

Задача из темы «Динамическое программирование»: в ней 72 задачи, и у каждой есть такой же разбор. Регистрация не нужна.