Темы --> Информатика --> Алгоритмы --> Вычислительная геометрия --> Многоугольники. Выпуклые оболочки
---> 38 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 2 3 4 5 6 7 8 Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Флатландский валун имеет форму многоугольника (не обязатеьно выпуклого). Для простоты будем рассматривать только многоугольники, у которых любые 3 вершины не лежат на одной прямой. Такие валуны получаются из разных видов камней, необязательно однородной плотности. Тем не менее, вы знаете расположение его центра тяжести. Сейчас мы положили на горизонтальную прямую две вершины камня (назовём их базовыми), и отпустили. В случае, если центр тяжести находится над отрезком, соединяющим базовые вершины, или над базовыми вершинами, то валун будет стоять. Иначе сила тяжести заставит его катится в определённом направлении.

Валун будет перемещаться на одной из базовых вершин, пока он не коснётся горизонтальной прямой другой вершиной. Будем называть этот процесс поворотом. Теперь одна из базовых вершин поменялась, и возможно центр тяжести теперь находится над отрезком, соединяющим базовые вершины. В этом случае валун остановится.

Иначе он продолжит вращаться, пока в конце концов не остановится, так как во Флатляндии вечный двигатель невозможен. Движение валуна происходит в вязкой среде, то есть инерция отсутствует, и валун остановится, как только сила тяжести позволит ему. Зная координаты вершин валуна и его центра тяжести, вычислите количество поворотов, которые совершит валун перед остановкой.

Входные данные

Входной файл содержит целое число N (3 ≤ N ≤ 100) . В следующих N + 1 строках находятся пары целых чисел. Первые N пар описывают координаты вершин валуна, перечисленные в порядке обхода по или против часовой стрелки (линия, на которой стоит валун, описывается уравнением y = 0 ; гравитация действует параллельно Oy в стороны отрицательных y ). Последняя пара чисел описывает центр тяжести. Все координаты — целые числа, не превосходящие по абсолютному значению 30 000 , все y -координаты — неотрицательные. Никакие 3 вершины не лежат на одной прямой. Центр тяжести находится внутри валуна.

Выходные данные

Выведите одно число — количество поворотов

ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
512 megabytes

Крешо купил вкуснейший сыр с перцем, но Степану перец не нравится, поэтому он хочет отрезать кусок, на котором не было бы перца. Сыр имеет форму выпуклого многоугольника, а каждая перчинка является точкой внутри него. Степан режет сыр только 1 раз. Он выбирает две вершины многоугольника, не являющиеся смежными, и режет по диагонали, соединяющей их. Затем Степан забирает ту из получившихся частей, на которой нет перца (ни внутри, ни на границе).

Рисунок соответствует первому тесту. Пунктирной линией показан разрез Степана.

Напишите программу, которая определит, может ли Степан отрезать кусок без перца. Если он может это сделать, выведите максимальную площадь куска, который может отрезать Степан.

Входные данные

Первая строка входного файла содержит одно целое число N — количество вершин в многоугольнике. Каждая из следующих N строк содержит два числа x i и y i — координаты i -й вершины. Следующая строка содержит одно число M — количество перчинок. Каждая из следующих M строк содержит два числа x i и y i — координаты i -й перчинки.

Вершины многоугольника заданы в порядке обхода против часовой стрелки и образуют выпуклый многоугольник. Никакие две подряд идущие стороны не параллельны.

Все перчинки расположены в различных точках и внутри многоугольника (они не расположены на стороне или снаружи многоугольника).

Выходные данные

Выведите одно число — удвоенную максимальную площадь (это число всегда целое). Если отрезать кусок без перца невозможно, выведите 0.

Примечание

Система оценки:

  1. 12 баллов. 4 ≤ N ≤ 300 , 1 ≤ M ≤ 300 .
  2. 39 баллов. 4 ≤ N ≤ 3000 , 1 ≤ M ≤ 3000 .
  3. 49 баллов. 4 ≤ N ≤ 300 000 , 1 ≤ M ≤ 300 000 .

Во всех подзадачах координаты от - 10 9 до 10 9 .

Примеры
Входные данные
5
0 1
3 0
4 2
2 3
0 3
3
2 1
3 1
3 2
Выходные данные
4
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
512 megabytes

В заповеднике живут q тигров. Чтобы следить за положением тигров на территории заповедника, используются ошейники с радиомаяком. Ошейник у каждого тигра имеет радиомаяк с уникальным сигналом. Система обнаружения настраивается на приём сигнала радиомаяка от i-го тигра последовательно для i от 1 до q.

Для приёма сигнала на территории заповедника установлено n приёмников в точках с координатами (x1, y1), ..., (xn, yn). Система обнаружения позволяет сотруднику заповедника за один запрос выбрать любые m (3 ≤ m ≤ n) приёмников. Выбранные приёмники должны являться вершинами выпуклого многоугольника. Система определяет, находится ли радиомаяк i-го тигра внутри этого многоугольника.

Сотрудник заповедника должен локализовать положение каждого тигра. Положение i-го тигра считается локализованным, если удалось определить такое множество приёмников, являющихся вершинами выпуклого многоугольника, что внутри этого многоугольника находится тигр, но нет других приёмников.

Для того, чтобы локализовать положение каждого из тигров, сотруднику разрешается сделать не более k запросов.

После того как положение i-го тигра локализовано, система автоматически переходит к приёму сигналов от следующего тигра, пока положение всех q тигров не будет локализовано.

Гарантируется, что никакие три приёмника не лежат на одной прямой, и ни один тигр не находится на прямой, проходящей через два приёмника. Гарантируется, что существует хотя бы один выпуклый многоугольник с вершинами в приёмниках, внутри которого находится тигр.

Требуется написать программу, которая взаимодействует с программой жюри и локализует положение каждого тигра.

Протокол взаимодействия

Это интерактивная задача.

Сначала на вход подаётся информация об установленных в заповеднике приёмниках и количестве тигров.

Первая строка входных данных содержит целое число n — количество приёмников (3 ≤ n ≤ 5 000). Последующие n строк описывают координаты приёмников, j-я из этих строк содержит два целых числа xj и yj — координаты j-го приёмника ( - 109 ≤ xj, yj ≤ 109). Следующая строка содержит число целое число q — количество тигров (1 ≤ q ≤ 2000).

Для локализации положения тигров необходимо выполнять запросы к системе обнаружения, роль которой выполняет программа жюри.

Для каждого теста зафиксировано число k — максимальное количество запросов к системе обнаружения для локализации положения одного тигра. Гарантируется, что k запросов достаточно, чтобы решить задачу для соответствующих данных. Это число не сообщается программе-решению, но ограничения на него в различных подзадачах приведены в таблице системы оценивания. Если программа-решение делает более k запросов для определения местоположения одного из тигров, на этом тесте она получает в качестве результата тестирования «Неверный ответ».

Запрос к системе обнаружения начинается с символа «?», за которым следует целое число m — количество выбранных в запросе приёмников (3 ≤ m ≤ n), и m различных целых чисел pi — номера приёмников, перечисленные в порядке обхода многоугольника по или против часовой стрелки (1 ≤ pi ≤ n).

В ответ программа получает строку «Yes», если тигр находится внутри многоугольника, образованного приёмниками с номерами p1, ..., pm, и строку «No» в противном случае.

После того, как положение тигра локализовано, программа-решение должна вывести строку, начинающуюся с символа «!», за которым следует целое число m — количество выбранных приёмников (3 ≤ m ≤ n), и m различных целых чисел pi — номера приёмников, перечисленные в порядке обхода многоугольника по или против часовой стрелки (1 ≤ pi ≤ n). Эта строка означает, что внутри выпуклого многоугольника, образованного приёмниками с номерами p1, ..., pm, находится тигр и нет других приёмников.

Ответное сообщение от программы жюри отсутствует, и программа-решение должна немедленно приступать к поиску следующего тигра. Локализовав положение тигра с номером q, программа-решение должна завершить работу.

Тигры не перемещаются во время работы системы обнаружения. Координаты тигров в каждом тесте фиксированы и не меняются в процессе тестирования.

Если существует несколько правильных многоугольников, локализующих положение тигра, можно вывести любой из них.

На рисунке продемонстрирована процедура локализации положения каждого из тигров из приведенного ниже примера.

Примечание

Приведённые примеры иллюстрируют взаимодействие программы-решения с программой жюри «по шагам», для чего в них добавлены дополнительные пустые строки. При реальном тестировании лишние пустые строки вводиться не будут, выводить пустые строки также не требуется.


Страница: << 2 3 4 5 6 7 8 Отображать по:
Выбрано
:
Отменить
|
Добавить в контест