IV Всероссийская олимпиада
22-27 марта 1992 года, Троицк Московской области
Задача I тура (автор В.В.Прохоров)
Пусть W-множество всех замкнутых односвязных ломанных на координатной плоскости xOy, удовлетворяющих условиям:
а) каждые два соседних звена ломанной взаимно перпендикулярны;
б) каждое звено ломанной параллельно одной из осей координат;
в) отсутствуют самопересечения или самокасания ломанной;
г) (x1, y1), ..., (хN, yN)- целочисленные координаты всех точек, где ломанная претерпевает излом (порядок нумерации произволен и неизвестен), N- количество изломов.
Требуется:
А. Написать по взможности оптимальные (по времени исполнения) программы с обоснованием алгоритмов), которые по задаваемым N и (x1, y1),..., (xN, yN) выдавали бы и отображали на экране монитора:
1) какую-либо ломанную из множества W;
2) ломанную из множества W, имеющую наибольшую длину, и значение этой длины;
3) ломанную из множества W, ограничивающую наибольшую площадь, и значение этой площади;
4) количество ломанных в множестве W.
Б.Решить задачу А, исключив пункт б) из определения W.
ПРИМЕЧАНИЕ. Односвязной называется ломанная, из любой точки которой можно попасть в любую другую ее точку, двигаясь по этой ломанной.
Задача II тура (авторы Е.В.Андреева и А.П.Марченко)[7, 92 г., 5-6]
В билете пассажира оказалось пробито отверстий больше, чем штырей в компостере. Пассажир утверждал, что пользовался только одним компостером, но случайно нажал его несколько раз. Контролеру требуется определить, могло ли быть получено заданное расположение отверстий одним и тем же компостером, если билет можно пробивать с обеих сторон неограниченное число раз и произвольно перемещать и поворачивать относительно компостера. Пробитые отверстия не выходят за пределы билета. В билете было пробито N (N<10) отверстий.
Требуется:
А. Для компостера с двумя штырями (S=2) составить программу, которая:
1) Определяет, можно ли получить заданным компостером требуемое расположение отверстий в билете. Если это возможно, то изображает вид билета после каждого нажатия компостера. В противном случае, выводит соответствующие сообщение.
2) Определяет количество K различных компостеров, каждым из которых можно пробить заданную конфигурацию.
3) При K=0 (см. пункт 2) находит компостер, с помощью которого можно пробить наибольшее количество из заданных отверстий.
4) Находит минимальное число нажатий, требуемое для пробивки заданной конфигурации отверстий, для каждого компостера из пункта 2.
Б. Решить задачу А для компостеров с числом штырей S (S>2).
Примечания. Все исходные данные - натуральные числа. Компостеры, дающие при однократном нажатии совпадающие конфигурации отверстий, считаются одинаковыми. Относительное расположение отверстий в билете и штырей в компостере вводятся либо с клавиатуры, либо из файла с именем COMP.DAT. Структура вводимой информации: {N, x1, y1, ..., xN, yN, S, u1, v1, ..., uS, vS}, где xi, yi- коодинаты отверстий в билете, ui, vi - координаты штырей в компостере. Нажатие компостера следует моделировать клавишей "Пробел". При выводе конфигурации на экран следует изображать координатную сетку. При этом программа должна осуществлять подходящее масштабирование.