Реферат: Геометрические задачи на олимпиадах по информатике
((a[min].x-b[k].x)*(a[j].y-b[k].y)-
(a[j].x-b[k].x)*(a[min].y-b[k].y)<0)
then min:=j else
if (not a[j].f) and
((a[min].x-b[k].x)*(a[j].y-b[k].y)-
(a[j].x-b[k].x)*(a[min].y-b[k].y)=0) and
(sqr(a[min].x-b[k].x)+sqr(a[min].y-b[k].y) >
sqr(a[j].x-b[k].x)+sqr(a[j].y-b[k].y))
then min:=j;
k:=k+1;
a[min].f:=true ;
b[k]:=a[min] {записана очередная вершина}
until min=m; {пока ломаная не замкнется}
for j:=1 to k do {печать результата}
writeln(b[j].x,' ',b[j].y);
end .
Приведем примеры задач, при решении которых используется построение выпуклой оболочки.
Задача 1. Стена. (В англоязычном варианте задача предлагалась на студенческих командных соревнованиях по программированию в Санкт-Петербурге в 2001 г. )
Однажды жадный король приказал своему архитектору построить стену вокруг дворца. Король был настолько жадный, что не стал слушать предложения архитектора о построении стены совершенной формы. Вместо этого король приказал потратить на строительство стены определенной высоты и произвольной формы (не обязательно в виде ломаной!!!) как можно меньше кирпичей, но потребовал, чтобы стена отстояла от дворца не меньше, чем на L футов. В случае невыполнения условия или перерасхода средств архитектор может лишиться головы.
Ваша задача помочь бедному архитектору. Ваша задача написать программу, которая определит минимально возможную длину стены, которой можно окружить дворец и при этом выполнить все требования короля.
Первая строка входного файла содержит 2 числа N (3 £N £ 1000) — количество углов в здании дворца и L (1 £L £ 1000) минимальное расстояние на которое стена может приближаться ко дворцу. Следующие N строк описывают координаты на поверхности земли углов дворца, в порядке их обхода по часовой стрелке. Каждая строка содержит два целых числа — Xi и Yi , разделенных пробелом (-10000 £Xi , Yi £ 10000), которые описываю координаты углов дворца в футах. Все углы дворца различны, а стороны не имеют других общих точек, кроме угловых.
Запишите в выходной файл одно число, определяющее минимальную длину дворца в футах, удовлетворяющую условию задачи. Ответ должен быть записан в виде целого числа, так как с вещественными числами король не знаком, однако округлять его следует так, чтобы целое число футов отличалось от настоящего ответа менее, чем на 8 дюймов (в 1 футе 12 дюймов).
Пример входного файла | Выходной файл |
9 100 200 400 300 400 300 300 400 300 400 400 500 400 К-во Просмотров: 218
Бесплатно скачать Реферат: Геометрические задачи на олимпиадах по информатике
|