ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
Задача 102891
УсловиеНа шахматной доске стоит кубик, занимая своим основанием в точности одно из полей доски. На его гранях написаны неотрицательные целые числа, не превосходящие 1000. Кубик можно перемещать на смежные поля, перекатывая через соответствующее ребро в основании. При движении кубика вычисляется сумма чисел, попавших в его основание (каждое число считается столько раз, сколько раз кубик оказывался лежащим на данной грани). Требуется найти такой путь движения кубика между двумя заданными
полями доски, при котором вычисленная сумма будет минимальной. Числа,
стоящие в основании кубика в начальной и конечной позициях, также входят в
сумму.
РешениеСкачать архив тестов и решенийСостояние кубика на доске определяется полем, на котором стоит кубик, и номерами граней, служащих ему в данный момент основанием и передней (ближней к нам) гранью. Построим граф, вершины которого будут соответствовать возможным состояниям кубика, а ребра – допустимым переходам между ними (эти переходы определяются перекатыванием кубика через одно из ребер в основании). Каждому ребру (a, b) полученного графа припишем вес, равный числу, находящемуся на основании кубика в состоянии a. Теперь можно воспользоваться алгоритмом Дейкстры [Липский 88, п. 3.3] для нахождения кратчайших путей из начальной вершины в вершины, соответствующие расположению кубика на конечном поле. Источники и прецеденты использования |
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|