Сегодняшний пост посвящен задаче E из последнего раунда Codeforces Round 1078 (Div. 2), а именно тому, как же до неё додуматься.
Предупреждение: Все индексы в этом посте написаны в привычной для кодера 0-нумерации, вместо привычной для обычного человека 1-нумерации.
Все мы знаем, как решается задача о черепашке. Пусть дана таблица $$$n \times m$$$, в каждой клетке записаны числа $$${a_i}_j$$$. Черепашка может ходить только вниз или вправо на одну клетку, то есть из клетки $$$(i, j)$$$ в клетки $$$(i + 1, j)$$$, $$$(i, j + 1)$$$. Награда черепашки при прохождении от клетки $$$(0, 0)$$$ до клетки $$$(n - 1, m - 1)$$$ определяется как сумма значений $$${a_i}_j$$$ во всех клетках, которые она посетила. Требуется найти максимальную награду, которую может получить черепашка.
Такая задача решается за $$$O(n \cdot m)$$$ и решение находит награду максимального пути от клетки $$$(0, 0)$$$ до каждой клетки $$$(i, j)$$$.
Если же Вы не знаете решение такой задачи, рекомендуется сначала его придумать или прочитать на просторах интернета.
В этой же задаче Рафаэль сначала изменяет значение ровно одной клетки на противоположное, после чего Микеланджело решает задачу о черепашке и максимизирует свою награду. Требуется посчитать какую минимальную награду может гарантировать Рафаэль. Ограничения: $$$n \cdot m \leq 10^5$$$
Вопрос 1: как решать эту задачу за любую асимптотику?
К сожалению, совсем наивного решения не хватает, чтобы решение работало меньше секунды. С другой стороны, так как в таблице меняется только лишь одна клетка, мы можем надеяться на то, что ответ в задаче про черепашку поменяется не сильно
Вопрос 2: как посчитать ответ на задачу о черепашке, если изменить значение в одной клетке?
Из прошлых пунктов мы знаем, как посчитать ответ на задачу для изменения каждой клетки. Остался лишь последний рывок:
Вопрос 3: как посчитать ответ для изменения каждой клетки за $$$O(n \cdot m)$$$ суммарно?
Итого, мы за $$$O(n \cdot m)$$$ времени и памяти суммарно научились получать ответ на все $$$n \cdot m$$$ задач о черепашке, в каждой из которых изменился знак значения одной из клеток. Теперь давайте возьмём минимум из всех полученных значений — это и будет ответом на задачу.
Замечание: Если Вам понравился это пост, то, возможно, Вам понравится контент из телеграм канала, в который я выкладываю свою подготовку к финалу ICPC 2026. Переходите по ссылке









