ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий
Тип задачи: Оптимальный маршрут по клетчатому полю.
Учебные темы: Двумерные массивы (матрицы). Алгоритмы обработки двумерных массивов: заполнение двумерного числового массива по заданным правилам, поиск элемента в двумерном массиве, вычисление максимума (минимума) и суммы элементов двумерного массива, перестановка строк и столбцов двумерного массива; Динамическое программирование как метод решения задач с сохранением промежуточных результатов. Задачи, решаемые с помощью динамического программирования: вычисление рекурсивных функций, подсчёт количества вариантов, задачи оптимизации; Анализ данных с помощью электронных таблиц. Вычисление суммы, среднего арифметического, наибольшего (наименьшего) значения диапазона. Вычисление коэффициента корреляции двух рядов данных. Построение столбчатых, линейчатых и круговых диаграмм. Построение графиков функций. Подбор линии тренда, решение задач прогнозирования. Решение задач оптимизации с помощью электронных таблиц.
Ответ: 2226 902
Решение.
Откроем приложенную электронную таблицу. Исходные числа занимают диапазон A1:T20: поле имеет размер 20 × 20. Начинаем в A1 и движемся только вправо или вниз. Число в каждой посещённой клетке, включая начало и финиш, прибавляется к сумме.
Нужно обязательно дойти до T20. Маршрут, закончившийся у стен раньше, в ответ не входит.
В исходном поле найдено 55 внутренних границ между соседними клетками, через которые проход запрещён.
Будем хранить для каждой достижимой клетки две величины: L — наименьшую сумму от A1 до неё, H — наибольшую. Для A1 обе величины равны числу в самой A1: 42.
В любую другую клетку можно прийти только из соседней слева или сверху. Переход слева разрешён, если нет стены между этими клетками; переход сверху — если нет стены над текущей клеткой. Недостижимого соседа не используем.
Если оба входа разрешены, прибавим число текущей клетки к меньшей из двух величин L и к большей из двух величин H. Если допустимый вход один, берём только его. Если нет ни одного, помечаем клетку «нет пути», а не нулём.
Это динамическое программирование: любой путь в текущую клетку заканчивается одним из допустимых входов. Поэтому выбор лучшего пути до предшественника перебирает все возможности последнего шага. Обрабатывая строки сверху вниз, а клетки в строке слева направо, получаем точные минимум и максимум для всего поля.
Для расчёта в редакторе таблиц создадим под исходными числами блок максимумов с началом в A22. В A22 введём =A1. Например, значение для B2 окажется в B23: при двух допустимых входах формула имеет вид =B2+МАКС(A23;B22). Если вход перекрыт стеной или ведёт из недостижимой клетки, соответствующую ссылку исключаем. Начальную клетку общей формулой не заменяем.
Первую строку заполняем только по входу слева, первый столбец — только по входу сверху. После каждой стены отдельно проверяем достижимость. Для минимумов создадим такой же блок, заменив МАКС на МИН и сохранив все ограничения переходов. Нельзя протянуть общую формулу через стены без исправления ссылок.
Контрольные значения начала таблицы:
| Клетка | Число | L | H |
|---|---|---|---|
| A1 | 42 | 42 | 42 |
| B1 | 74 | 116 | 116 |
| A2 | 9 | 51 | 51 |
| B2 | 72 | 123 | 188 |
Итог в единственной разрешённой конечной клетке T20:
| Финиш | Минимум | Максимум |
|---|---|---|
| T20 | 902 | 2226 |
В T20 получаем L = 902, H = 2226. Значения в других тупиках не учитываем.
Проверка. Восстановим оба оптимальных маршрута, каждый раз выбирая предшественника, давшего записанную сумму. Ниже указаны посещённые столбцы по строкам; диапазон включает оба края. Между строками спускаемся в том столбце, в котором закончился предыдущий отрезок. Знак «—» означает, что маршрут завершился раньше.
| Строка | Минимальный: столбцы | Сумма | Максимальный: столбцы | Сумма |
|---|---|---|---|---|
| 1 | A | 42 | A–B | 116 |
| 2 | A | 9 | B–M | 558 |
| 3 | A | 11 | M–P | 283 |
| 4 | A | 29 | P | 85 |
| 5 | A | 28 | P | 63 |
| 6 | A–G | 216 | P | 82 |
| 7 | G–J | 49 | P | 88 |
| 8 | J–M | 31 | P | 53 |
| 9 | M | 19 | P–Q | 159 |
| 10 | M | 20 | Q | 77 |
| 11 | M | 6 | Q | 74 |
| 12 | M | 5 | Q | 48 |
| 13 | M | 13 | Q | 27 |
| 14 | M | 49 | Q | 46 |
| 15 | M | 58 | Q–R | 89 |
| 16 | M–O | 40 | R | 52 |
| 17 | O | 14 | R | 62 |
| 18 | O–P | 68 | R–S | 113 |
| 19 | P | 50 | S–T | 140 |
| 20 | P–T | 145 | T | 11 |
| Итого | 902 | 2226 |
Все переходы этих маршрутов разрешены. Суммы чисел исходного файла дают 902 и 2226; начальная и конечная клетки учтены ровно один раз. Таблица динамического программирования доказывает, что меньшая и большая суммы невозможны.
По условию сначала записываем максимум, затем минимум.
Ответ: 2226 902.
Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINFF7EDCC.
Сообщение увидит только команда сайта: на странице оно не публикуется.
Комментарии к решению
Комментарии видны всем посетителям сайта.
Комментариев пока нет. Будьте первым.
Чтобы оставить комментарий, войдите или зарегистрируйтесь.