ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
Задача 102886
УсловиеПролетающие время от времени в опасной близости от нашего спутника Луны астероиды захватываются ее гравитационным полем и, будучи ничем не задерживаемы, врезаются с огромной скоростью в лунную поверхность, оставляя в память о себе порядочных размеров кратеры приблизительно круглой формы.Увлекающийся астрономией профессор З. В. Ездочетов занялся изучением
современной карты участка лунной поверхности. Он решил найти на ней
максимально длинную цепочку вложенных друг в друга кратеров. Зная о Ваших
недюжинных способностях в области построения алгоритмов, за помощью в
решении этой непростой задачи он обратился к Вам.
РешениеСкачать архив тестов и решенийПостроим граф, вершины которого соответствуют кратерам, а дуга из вершины i в вершину j идет в том и только том случае, когда i-ый кратер целиком лежит внутри j-го. По условию задачи нам нужно найти длиннейший путь в полученном ориентированном ациклическом графе. Для этого применяем метод динамического программирования, используя схему топологической сортировки [Липский 88, п. 3.4; Кнут 76, п. 2.2.3]. Упражнение При определении того, лежит ли i-й кратер внутри j-го, не обязательно применять вычисления с плавающей точкой. Покажите, как организовать эту проверку, используя лишь целочисленную арифметику диапазона LongInt, так, чтобы исключить возможность арифметического переполнения. Источники и прецеденты использования |
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|