РУҚА
25

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

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

На каждом 3-м километре кольцевой автодороги с двусторонним движением установлены контейнеры для мусора. Длина кольцевой автодороги равна $3N$ километров. Нулевой километр и $3N$-й километр автодороги находятся в одной точке. Известно количество мусора, которое накапливается ежедневно в каждом из контейнеров. Из каждого пункта мусор вывозит отдельный мусоровоз. Стоимость доставки мусора вычисляется как произведение количества мусора на расстояние от пункта до центра переработки. Центр переработки отходов расположен в одном из пунктов сбора мусора таким образом, что общая стоимость доставки мусора из всех пунктов минимальна.

Определите минимальную суммарную стоимость доставки мусора из всех пунктов сбора в центр переработки отходов.

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

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

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

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

5 шагов
1

Пронумеруем пункты от $0$ до $N-1$, а количество мусора в пункте $i$ обозначим через $a_i$. Расстояние между пунктами $i$ и $j$ равно $3\cdot\min(|i-j|,N-|i-j|)$.

2

Для центра в пункте $0$ вычислим начальную стоимость $C_0$, просуммировав для каждого пункта произведение количества мусора на кратчайшее расстояние до пункта $0$.

3

Пусть $S=\sum a_i$. При переносе центра из пункта $i$ в пункт $i+1$ для мусора, находящегося на одной стороне разреза кольца, расстояние увеличивается на 3 км, а для мусора на другой стороне уменьшается на 3 км. Поэтому стоимость можно пересчитывать за $O(1)$.

4

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

Алгоритм выполняется за $O(N)$ времени и $O(N)$ памяти при хранении всех значений либо за $O(N)$ времени и $O(1)$ дополнительной памяти при последовательной обработке после вычисления начальной стоимости.

Ответ

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

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

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

Использование обычного расстояния по прямой вместо кратчайшего расстояния по кольцу.

Забывание множителя 3, так как соседние пункты находятся через 3 км.

Перебор всех пар «центр — пункт» для файла B.

Использование 32-битного целого типа для сумм и стоимости.

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

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

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

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