DP 2D на Python: как решать + 5 задач с проверкой
DP 2D (двумерная динамика) — это способ решать задачи, где состояние описывается двумя числами: например, клетка на поле (i, j), или «сколько предметов рассмотрели и какой вес уже набрали», или «позиция в строке и длина/маска/баланс». В олимпиадных задачах она часто встречается в маршрутах по клеткам (минимальная стоимость/максимальная сумма), в рюкзаках, в редакторских расстояниях и «автозамене», в задачах на разбиения и подсчёт способов.
Как распознать, что нужна DP 2D:
- есть таблица/сетка, и переходы зависят от соседей (вверх/влево/диагональ), или разрешены ходы вправо/вниз;
- в условии просят «минимум/максимум/количество способов», а выбор на шаге влияет только на пару параметров;
- можно сформулировать: «чтобы посчитать ответ для (i, j), достаточно знать ответы для меньших (i’, j’)».
Суть приёма: заводим массив dp[i][j] — лучший ответ для состояния (i, j), и заполняем его в правильном порядке (обычно по строкам/столбцам). Переход — это минимум/максимум/сумма из нескольких предыдущих состояний плюс цена текущего шага. Это ускоряет решение, потому что вместо перебора всех путей/вариантов мы считаем каждый dp[i][j] ровно один раз.
С чего начать учиться:
- чётко определить, что означает
dp[i][j](одна фраза); - выписать переходы (откуда можно прийти) и базу (первая строка/столбец);
- выбрать порядок заполнения, чтобы все нужные состояния уже были посчитаны;
- продумать ответ: где лежит итог (например,
dp[m][n]) и нужны ли восстановление пути/оптимизация памяти до двух строк.
Ниже — задачи с автопроверкой и разбором подхода по DP 2D.
Задачи по теме «DP 2D»
- Квартал без пустырей — продвинутый
- Автозамена в телефоне — продвинутый
- Рюкзак охотника за реликвиями — продвинутый
- Общие конспекты — продвинутый
- Игра: самый дешёвый маршрут по клеткам — средний
Смежные темы
Куда дальше
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт
- Олимпиада по информатике: с чего начать — два мира олимпиад — ВсОШ и перечневые: этапы, задания и на каком языке писать
- На программиста по олимпиаде: путь по классам — что даёт диплом, куда с ним берут на ИТ-направления и почему решает 9 класс