РУҚА
ЕГЭ · информатика · решения по теме

Решения заданий ФИПИ ЕГЭ по информатике: «Динамическое программирование» — с ответами

Каждая задача темы из открытого банка ФИПИ — с ответом и первыми шагами разбора. Полное решение по шагам и официальный ключ — по ссылкам в карточке.

Задания без решений
72
решений с ответами
2 435
задач в предмете
4
страниц списка
41ФИПИ B4F848№ 18Повышенная

Максимальный и минимальный путь

Квадрат разлинован на $N \times N$ клеток ($1 < N < 30$). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде «вправо»…

  1. 1
    Поскольку Робот движется только вправо и вниз, в каждую клетку он может прийти только сверху или слева. Для максимальной суммы выбираем большее из возможных значений, для минимальной — меньшее.$$M_{i,j}=a_{i,j}+\max(M_{i-1,j},M_{i,j-1}),\quad m_{i,j}=a_{i,j}+\min(m_{i-1,j},m_{i,j-1})$$
  2. 2
    Для максимальных сумм получаем последнюю строку таблицы: $14, 17, 35, 41$. Следовательно, максимальная сумма равна $41$.$$M_{4,4}=41$$

Ещё 1 шаг — в полном решении

Решение полностьюОтветРешать самому3 шага в разборе
42ФИПИ B898EB№ 18Высокая

Максимальная и минимальная суммы

Квадрат разлинован на $N \times N$ клеток ($1 < N < 30$). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде «вправо»…

  1. 1
    Считаем значение каждой клетки электронной таблицы равным стоимости монеты в этой клетке. Для каждой клетки храним два значения: максимальную и минимальную сумму, с которой Робот может в неё попасть.
  2. 2
    Для клетки, в которую можно попасть сверху, переход выполняется из клетки над ней; для клетки, в которую можно попасть слева, — из клетки слева. Если проход через соответствующую стену запрещён, этот переход не рассматривается.

Ещё 2 шага — в полном решении

Решение полностьюОтветРешать самому4 шага в разборе
43ФИПИ C82367№ 18Высокая

Максимальный и минимальный путь

Квадрат разлинован на $N \times N$ клеток, где $1 < N < 30$. Исполнитель Робот может перемещаться по клеткам только вправо или вниз. Между соседними клетками могут находиться внутренние стены, через…

  1. 1
    Введём для каждой клетки две величины: максимальную и минимальную сумму монет, которую можно собрать при попадании в эту клетку.
  2. 2
    Для клетки без стены значения вычисляются по формулам: к максимуму из допустимых соседей сверху и слева прибавляется стоимость монеты в клетке; аналогично вычисляется минимум.$$M_{i,j}=a_{i,j}+\max(M_{i-1,j},M_{i,j-1}),\quad m_{i,j}=a_{i,j}+\min(m_{i-1,j},m_{i,j-1})$$

Ещё 1 шаг — в полном решении

Решение полностьюОтветРешать самому3 шага в разборе
44ФИПИ D0BC8A№ 18Повышенная

Максимальный и минимальный путь

Квадрат разлинован на $N \times N$ клеток ($1 < N < 26$). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде «вправо»…

  1. 1
    Каждый маршрут из левой верхней клетки в правую нижнюю содержит одну и ту же последовательность перемещений: $N-1$ перемещений вправо и $N-1$ перемещений вниз. Для каждой клетки вычислим максимальную и минимальную сумму монет на пути из…
  2. 2
    В первую клетку записываем её стоимость. В первой строке и первом столбце значения накапливаются единственным возможным способом.

Ещё 1 шаг — в полном решении

Решение полностьюОтветРешать самому3 шага в разборе
45ФИПИ D99C0C№ 18Высокая

Минимальный и максимальный путь

Квадрат разлинован на $N \times N$ клеток ($1 < N < 26$). В каждой клетке указан натуральный бонус, не превышающий 100. Робот перемещается из левой верхней клетки в правую нижнюю, выполняя команды…

  1. 1
    Разобьём задачу на подзадачи: для каждой клетки найдём минимальную и максимальную сумму бонусов, которую можно получить при попадании в эту клетку.
  2. 2
    В начальной клетке обе величины равны её бонусу. Для каждой следующей клетки рассматриваем только те клетки сверху и слева, с которыми нет стены.

Ещё 2 шага — в полном решении

Решение полностьюОтветРешать самому4 шага в разборе
46ФИПИ D9cFB2№ 18Высокая

Максимальный и минимальный путь

Квадрат разлинован на $N \times N$ клеток, где $1 < N < 30$. В каждой клетке лежит монета достоинством от 1 до 100. Робот начинает движение из левой верхней клетки и за одно перемещение может…

  1. 1
    Считаем стоимость монеты в каждой клетке и сведения о стенах из приложенной электронной таблицы.
  2. 2
    Для каждой клетки вычисляем две величины: максимальную и минимальную сумму, которую можно набрать при попадании в эту клетку. Переходы выполняются только вправо и вниз и только через проходы без стен.$$M_{i,j}=a_{i,j}+\max(M_{i-1,j},M_{i,j-1})$$

Ещё 2 шага — в полном решении

Решение полностьюОтветРешать самому4 шага в разборе
47ФИПИ DE9F28№ 18Высокая

Максимальные и минимальные суммы

Квадрат разлинован на $N \times N$ клеток ($1 < N < 30$). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде «вправо»…

  1. 1
    Для каждой клетки создаются два значения: максимальная и минимальная суммы монет на пути из начальной клетки в данную клетку.
  2. 2
    Если в клетку можно попасть из клетки слева, соответствующее значение получают добавлением монеты текущей клетки к значению в левой клетке.

Ещё 3 шага — в полном решении

Решение полностьюОтветРешать самому5 шагов в разборе
48ФИПИ E02E70№ 18Высокая

Минимальная и максимальная сумма

Квадрат разлинован на $N \times N$ клеток ($1 < N < 26$). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде вправо Робот…

  1. 1
    Робот движется только вправо и вниз, поэтому значения для клетки можно вычислять после обработки клетки сверху и клетки слева.
  2. 2
    Для каждой клетки строятся две динамические таблицы: $min[i][j]$ — минимальная сумма бонусов, а $max[i][j]$ — максимальная сумма бонусов на допустимом пути из начальной клетки.

Ещё 2 шага — в полном решении

Решение полностьюОтветРешать самому4 шага в разборе
49ФИПИ E45868№ 18Повышенная

Маршрут Робота по клеткам

Квадрат разлинован на $N \times N$ клеток ($1 < N < 30$). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде «вправо»…

  1. 1
    Используем динамическое программирование: в каждой клетке вычисляем максимальную и минимальную суммы монет на пути из левой верхней клетки.$$M_{i,j}=a_{i,j}+\max(M_{i-1,j},M_{i,j-1}),\quad m_{i,j}=a_{i,j}+\min(m_{i-1,j},m_{i,j-1})$$
  2. 2
    Для таблицы из примера значения максимальных сумм в последней строке равны $14$, $18$, $35$, $41$.

Ещё 2 шага — в полном решении

Решение полностьюОтветРешать самому4 шага в разборе
50ФИПИ E60642№ 18Высокая

Максимальная и минимальная сумма

Квадрат разлинован на $N \times N$ клеток, где $1 < N < 30$. Исполнитель Робот перемещается из левой верхней клетки в правую нижнюю, выполняя команды «вправо» и «вниз». Между соседними клетками…

  1. 1
    Разобьём квадрат на клетки и будем обрабатывать их слева направо и сверху вниз: Робот движется только вправо и вниз.
  2. 2
    Для каждой клетки вычислим максимальную сумму на допустимом пути. Если в клетку можно прийти из нескольких клеток, выбираем наибольшую сумму среди разрешённых переходов и прибавляем стоимость монеты текущей клетки.$$M_{i,j}=a_{i,j}+\max(M_{i-1,j},M_{i,j-1})$$

Ещё 2 шага — в полном решении

Решение полностьюОтветРешать самому4 шага в разборе
51ФИПИ EAAB4F№ 18Высокая

Минимальная и максимальная сумма

Квадрат разлинован на $N \times N$ клеток ($1 < N < 26$). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде вправо Робот…

  1. 1
    Обозначим бонус клетки в строке $i$ и столбце $j$ через $a_{i,j}$. Для каждой клетки создадим два значения: минимальную и максимальную суммы бонусов на допустимом пути от начальной клетки.$$mn_{i,j}=\min\text{ допустимых сумм},\quad mx_{i,j}=\max\text{ допустимых сумм}$$
  2. 2
    В начальной клетке оба значения равны её бонусу. Если в клетку можно попасть сверху, учитываем значение из клетки над ней; если слева — из клетки слева. Переход через утолщённую границу запрещён.$$mn_{i,j}=a_{i,j}+\min(mn_{i-1,j},mn_{i,j-1}),\quad mx_{i,j}=a_{i,j}+\max(mx_{i-1,j},mx_{i,j-1})$$

Ещё 1 шаг — в полном решении

Решение полностьюОтветРешать самому3 шага в разборе
52ФИПИ EE71F0№ 18Высокая

Максимальная и минимальная сумма

Квадрат разлинован на $N \times N$ клеток ($1 < N < 30$). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде «вправо»…

  1. 1
    Считываем из электронной таблицы размер квадрата, стоимость монет в клетках и расположение внутренних стен.
  2. 2
    Для каждой клетки вычисляем максимальную сумму, которую можно получить при попадании в неё из левой верхней клетки. Переходы через стены и недостижимые клетки не учитываются.$$F_{i,j}=a_{i,j}+\max(F_{i-1,j},F_{i,j-1})$$

Ещё 2 шага — в полном решении

Решение полностьюОтветРешать самому4 шага в разборе
53ФИПИ F26F05№ 18Высокая

Максимальная и минимальная сумма

Квадрат разлинован на $N \times N$ клеток ($1 < N < 30$). В каждой клетке лежит монета достоинством от 1 до 100. Робот начинает движение из левой верхней клетки и может перемещаться только вправо…

  1. 1
    Обрабатываем клетки электронной таблицы слева направо и сверху вниз. В каждой клетке учитываем только те переходы сверху или слева, которые не пересекают стену.
  2. 2
    Для каждой достижимой клетки сохраняем две величины: максимальную и минимальную сумму монет на пути из начальной клетки.$$\mathrm{maxSum}_{i,j}=a_{i,j}+\max(\mathrm{maxSum}_{i-1,j},\mathrm{maxSum}_{i,j-1})$$

Ещё 2 шага — в полном решении

Решение полностьюОтветРешать самому4 шага в разборе
54ФИПИ F3A05F№ 18Повышенная

Минимальный и максимальный путь

Квадрат разлинован на $N \times N$ клеток ($1 < N < 26$). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде «вправо»…

  1. 1
    В начальной клетке минимальная и максимальная суммы равны стоимости этой клетки: $1$.
  2. 2
    Для каждой следующей клетки считаем две величины: минимальную и максимальную сумму на пути из левой верхней клетки. В клетку можно попасть только из верхней или левой клетки.$$m_{i,j}=a_{i,j}+\min(m_{i-1,j},m_{i,j-1}),\quad M_{i,j}=a_{i,j}+\max(M_{i-1,j},M_{i,j-1})$$

Ещё 2 шага — в полном решении

Решение полностьюОтветРешать самому4 шага в разборе
55ФИПИ F4E6CC№ 18Высокая

Максимальный и минимальный путь

Квадрат разлинован на $N \times N$ клеток ($1 < N < 30$). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде «вправо»…

  1. 1
    Создаём две таблицы. В первой храним максимальную сумму монет, которую можно собрать при попадании в каждую клетку, во второй — минимальную.$$M_{i,j}=a_{i,j}+\max(M_{i-1,j},M_{i,j-1})$$
  2. 2
    При вычислении учитываем стены: переход через стену исключается. Для минимальной суммы вместо максимума берём минимум.$$m_{i,j}=a_{i,j}+\min(m_{i-1,j},m_{i,j-1})$$

Ещё 1 шаг — в полном решении

Решение полностьюОтветРешать самому3 шага в разборе
56ФИПИ FAFe1B№ 18Высокая

Максимальная и минимальная суммы

Квадрат разлинован на $N \times N$ клеток ($1 < N < 30$). В каждой клетке лежит монета достоинством от 1 до 100. Робот начинает движение из левой верхней клетки и может перемещаться только вправо…

  1. 1
    Обозначим через $max[i][j]$ и $min[i][j]$ максимальную и минимальную суммы монет на пути из левой верхней клетки в клетку $(i,j)$.
  2. 2
    Для каждой клетки рассмотрим переходы сверху и слева. Переход учитывается только в том случае, если между соответствующими клетками нет стены.

Ещё 3 шага — в полном решении

Решение полностьюОтветРешать самому5 шагов в разборе
57ФИПИ 072D53№ 25Высокая

Максимальная сумма подпоследовательности

Дана последовательность из $N$ натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, сумма элементов каждой из которых кратна $k=71$. Найдите среди них подпоследовательность с…

  1. 1
    Обозначим через $S_i$ сумму первых $i$ элементов последовательности, где $S_0=0$. Сумма элементов подпоследовательности от $l+1$ до $r$ равна $S_r-S_l$.$$S_r-S_l$$
  2. 2
    Эта сумма кратна $71$, если префиксные суммы имеют одинаковые остатки при делении на $71$.$$S_r \equiv S_l \pmod{71}$$

Ещё 3 шага — в полном решении

Решение полностьюОтветРешать самому5 шагов в разборе
58ФИПИ C2D70A№ 25Высокая

Минимальная сумма показаний

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

  1. 1
    Перебор всех троек позиций имеет слишком большую сложность, поэтому состояния нужно обновлять при одном проходе по файлу.$$O(N^3)$$
  2. 2
    Пусть $a_i$ — показание в момент $i$. Для каждой позиции поддерживаем минимальную сумму одного, двух и трёх выбранных показаний, причём последние выбранные позиции удовлетворяют ограничению по расстоянию.$$d_1(i)=a_i$$

Ещё 3 шага — в полном решении

Решение полностьюОтветРешать самому5 шагов в разборе
59ФИПИ DD9960№ 25Высокая

Максимальная сумма трёх показаний

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

  1. 1
    Пусть $a_i$ — значение показания в момент $i$. Для каждого момента нужно учитывать только показания с индексами не больше $i-K$, поскольку между выбранными моментами должно пройти не менее $K$ минут.$$j \leq i-K$$
  2. 2
    Вычисляем лучшие суммы для последовательностей из одного и двух показаний. Для двух показаний к текущему значению добавляется лучший результат для одного показания среди допустимых предыдущих позиций.$$dp_1[i]=a_i,\qquad dp_2[i]=a_i+\max_{j\leq i-K}dp_1[j]$$

Ещё 2 шага — в полном решении

Решение полностьюОтветРешать самому4 шага в разборе
60ФИПИ E8867C№ 25Высокая

Максимальная сумма трёх показаний

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

  1. 1
    Нумеруем показания от $0$ до $N-1$. Для текущего показания $a_i$ предыдущие выбранные показания должны иметь индексы не больше $i-K$.
  2. 2
    Поддерживаем три величины: максимальное значение одного допустимого показания, максимальную сумму пары, второй элемент которой уже допустим для текущего положения, и максимальную найденную сумму трёх показаний.

Ещё 3 шага — в полном решении

Решение полностьюОтветРешать самому5 шагов в разборе