25

Решение: Максимальное произведение показаний

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

По каналу связи передаётся последовательность натуральных чисел — показания прибора. В течение $N$ минут ($N$ — натуральное число) прибор ежеминутно регистрирует значение напряжения в электрической сети и передаёт его на сервер.

Определите три таких переданных числа, чтобы между моментами передачи любых двух из них прошло не менее $K$ минут, а произведение этих трёх чисел было максимально возможным. Запишите найденное произведение.

Даны два входных файла — файл A и файл B. В первой строке каждого файла содержится натуральное число $K$ — минимальное количество минут, которое должно пройти между моментами передачи показаний, а во второй — количество переданных показаний $N$ ($1 \leq N \leq 10\,000\,000$, $N > K$). В каждой из следующих $N$ строк находится одно натуральное число, не превышающее $10\,000\,000$, обозначающее значение напряжения в соответствующую минуту.

Для выполнения задания используйте данные из прилагаемых файлов. При обработке файла B нельзя использовать переборный алгоритм, вычисляющий произведение для всех возможных вариантов.

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

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

4 шага
1

Нумеруем показания последовательности начиная с единицы. Для трёх выбранных позиций $i<j<l$ должны выполняться условия $j-i\geq K$ и $l-j\geq K$.

2

Для каждой позиции поддерживаем максимальное произведение пары чисел, выбранных среди уже доступных позиций с необходимым расстоянием. При обработке очередного числа учитываем только позиции, отстоящие от него минимум на $K$.

3

Чтобы обработать файл B за приемлемое время, не перебираем тройки. Используем динамическое программирование и префиксные максимумы: вычисление выполняется за $O(N)$ времени и требует $O(N)$ памяти либо $O(K)$ памяти при соответствующей оптимизации.

После обработки последнего показания выбираем максимальное из значений произведения трёх допустимых чисел.

Ответ

Численные ответы зависят от содержимого файлов A и B, которое не предоставлено в исходных данных.

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

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

Проверяют расстояние только между первой и последней выбранными позициями.

Разрешают выбирать соседние показания, если расстояние между ними меньше $K$.

Используют полный перебор всех троек для файла B.

Путают номера минут с самими значениями показаний.

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

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

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

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