решай.ai · шпаргалка

Задание 18: Робот-сборщик монет

ЕГЭ Информатика

Как выглядит

Стандартная формулировка: квадрат разлинован на N×NN \times N клеток, где 1<N<171 < N < 17. В каждой клетке лежит монета достоинством от 1 до 100. Робот стартует в левой верхней клетке, движется только вправо или вниз и финиширует в правой нижней клетке, собирая монеты со всех посещённых клеток, включая начальную и конечную. Нужно найти максимальную и минимальную сумму, которую может собрать Робот.

Особенности оформления ответа:

  • ответ — два числа, записанные подряд без пробелов и разделителей;
  • порядок фиксирован: сначала максимальная сумма, затем минимальная; …

Что нужно знать

  • Число клеток в квадрате — N2N^2, а число шагов Робота от старта до финиша всегда равно 2N−22N-2, число посещённых клеток — 2N−12N-1.
  • Число различных маршрутов из левого верхнего угла в правый нижний равно (2N−2N−1)\binom{2N-2}{N-1} — это биномиальный коэффициент, который растёт очень быстро (уже при N=16N=16 счёт идёт на сотни миллионов маршрутов), поэтому перебор всех путей вручную или простым циклом невозможен.
  • Основная идея — принцип оптимальности динамического программирования: лучший (или худший) путь до клетки (i,j)(i,j) строится только из лучшего пути до соседа сверху (i−1,j)(i-1,j) или соседа слева (i,j−1)(i,j-1).
  • Рекуррентные формулы для максимальной суммы Mmax(i,j)M_{max}(i,j) и минимальной Mmin(i,j)M_{min}(i,j): Mmax(i,j)=aij+max⁡(Mmax(i−1,j), Mmax(i,j−1))M_{max}(i,j) = a_{ij} + \max\big(M_{max}(i-1,j),\ M_{max}(i,j-1)\big) Mmin(i,j)=aij+min⁡(Mmin(i−1,j), Mmin(i,j−1))M_{min}(i,j) = a_{ij} + \min\big(M_{min}(i-1,j),\ M_{min}(i,j-1)\big) где aija_{ij} — значение монеты в клетке (i,j)(i,j).
  • Граничные условия: первая строка и первый столбец имеют только один возможный путь — накопительную сумму: Mmax(1,j)=Mmin(1,j)=∑k=1ja1k,Mmax(i,1)=Mmin(i,1)=∑k=1iak1M_{max}(1,j)=M_{min}(1,j)=\sum_{k=1}^{j} a_{1k}, \qquad M_{max}(i,1)=M_{min}(i,1)=\sum_{k=1}^{i} a_{k1}
  • Ответ — это Mmax(N,N)M_{max}(N,N) и Mmin(N,N)M_{min}(N,N), записанные подряд.
  • Пригодятся базовые навыки табличного процессора: относительные и абсолютные ссылки (знак $), функции МАКС()/MAX() и МИН()/MIN(), автозаполнение формул протягиванием.

Алгоритм

  1. Открыть приложенный файл и определить размер квадрата NN (число строк или столбцов таблицы).
  2. Скопировать исходную таблицу монет в два места на листе — будущие таблицы MmaxM_{max} и MminM_{min}.
  3. В верхнюю левую ячейку обеих копий вписать значение a11a_{11}.
  4. Заполнить первую строку и первый столбец накопительными суммами (единственный путь).
  5. Во все остальные ячейки таблицы MmaxM_{max} ввести формулу aij+max⁡(сосед сверху;сосед слева)a_{ij}+\max(\text{сосед сверху};\text{сосед слева}) и протянуть её на весь диапазон.
  6. Аналогично заполнить таблицу MminM_{min}, заменив функцию максимума на минимум.
  7. Считать значения из правых нижних ячеек обеих таблиц — это максимальная и минимальная суммы.
  8. Записать ответ как две цифры подряд: сначала максимум, затем минимум, без пробелов и знаков.

Ловушки

  • Перепутан порядок чисел в ответе. Нужно писать сначала максимум, затем минимум — обратный порядок засчитывается как неверный ответ, даже если оба числа правильные.
  • Неверные абсолютные и относительные ссылки в формуле. При протягивании формулы вправо и вниз легко «съехать» ссылкой на соседнюю клетку не в ту сторону — стоит сразу проверить формулу в нескольких соседних ячейках вручную.
  • Ошибка в границах таблицы. Первую строку и первый столбец нельзя заполнять общей формулой с max⁡\max/min⁡\min от двух соседей — там путь единственный, и формула должна быть просто накопительной суммой.
  • Путаница между максимумом и минимумом монет и суммой пути. Задание просит сумму по всему маршруту, а не самое дорогое или самое дешёвое отдельное значение клетки. …
reshay.ai/ege/informatika/zadanie-18 — задачи с разборами и тренажёр

Полный гайд и задачи задания 18 →