Вычислительная геометрия

171 задачавместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Один успешный бизнесмен Василий после двух долгих лет непрерывной работы ушел в долгожданный отпуск. Желая расслабиться, у него 
возникла идея завести сад из синих и красных цветов на заднем дворе своего коттеджа. Ежедневная работа с таблицами ему изрядно надоела, 
поэтому он хотел видеть сад круглой формы. Однако чтобы созерцание сада, сидя на кресле, было максимально расслабляющим, 
граница между синими и красными должна быть на одинаковом расстоянии L от него. 
 
Василий нанял садовника для создания сада. Садовник закупил одинаковое количество красных и синих цветов, Но потом вспомнил последнее 
условие бизнесмена. Ему было жаль выкидывать так много цветов, поэтому он решил что граница между разными цветами должна делить сад 
на две равные по площади части. Тогда он сможет посадить все цветы. Не владея высокими знаниями геометрии, садовник смог посчитать 
радиус сада R, но расстояние от кресла на веранде до центра сада он попросил посчитать Вас. 
 
Входной файл содержит целое число R - радиус сада (1 < R < 10000) и целое число L - расстояние от кресла до границы между синими и красными 
цветами (1 < L < 10000). Ваша задача вывести расстояние от кресла на веранде до центра сада. Ответ округлите до сотых, или выведите -1, 
если построить такой сад невозможно. Обратите внимание, что кресло может находится как за пределами сада, так и в саду. 

Входные данные: 
12 15 
 
Выходные данные: 
13.262 
 
 
Входные данные: 
100 1 
 
Выходные данные: 
-1 


(с) Линд Владимир
В канун Нового Года радостный Шурик решил отправиться в ближайший торговый центр, чтобы купить подарки для своих друзей. Хороший морозный вечер, снегопад из крупных снежных хлопьев, яркие новогодние огни и приятная предпраздничная суета. Казалось бы, что может испортить этот день?

Но вдруг Шурик заметил подозрительный черный джип, ехавший по прямой, характеризующейся уравнением y=kx + b. Затем в точке М(x;y) джип остановился, и из него вышел крепкий юноша азиатского происхождения с черным чемоданом, предположительно бомбой. Он двигался по прямой, также проходящей через точку М и перпендикулярной прямой, характеризующей движение машины.

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

Входные данные
В первой строке записаны вещественные числа k (0.1<k<10)
 и b (-20<b<20, b!=0)
Во второй строке записаны два целых числа: x и y (1<x,y<20) – координаты точки М.
Выходные данные
Нужно вывести одно число – площадь четырехугольника с точностью до двух знаков после запятой.
Пример
Ввод: 
2 1
1 3
Вывод:
11.00

Примечание:

(с) Курбатов Егор 9и
На протяжении многих лет Вася работает программистом в одной очень большой и очень из- вестной компании. Эта компания обеспечивает своих сотрудников всем необходимым для приятной и плодотворной работы: бесплатными обедами, транспортом от дома до места работы и многим, многим другим. И вот в один прекрасный солнечный день Вася понял, что ему очень наскучил вид из окна его офиса, и ему нужно, чтобы за окном было что-то новое и прекрасное. А что может быть лучше чудесного горного пейзажа? Придя к этой мысли, Вася попросил своего менеджера подобрать себе новый офис с красивым видом на горы.

В той местности, где располагается офис Васи, каждая гора принадлежит некоторой горной цепи. Так как Васе хочется, чтобы вид из окна его офиса был идеальным, то он попросил подобрать себе такой офис, чтобы никакие две горные цепи, видимые из окна, не пересекались. Менеджер Васи нашел прекрасный новый офис, из которого видно N горных цепей, но он никак не может определить, понравится ли Васе вид из окна этого офиса. Помогите ему!

Более формально, вид из окна офиса представляет собой набор горных цепей, пронумерованных от 1 до N, где горная цепь с номером i представляет собой ломаную на плоскости из li звеньев с вершинами в точках (xi,j , yi,j ), причем для любых i, j выполнено xi,j < xi,j+1.

Кроме этого, окно в офисе имеет фиксированную ширину, поэтому все горные цепи начинаются и заканчиваются на одной вертикали, то есть существуют такие числа A и B, что для любого номера i горной цепи выполнено xi,0 = A, xi,li = B.

Отметим, что из определения горной цепи следует, что для любого значения абсциссы A <= x <= B на ломаной с номером i существует единственная точка (x, yi(x)) с этим значением абсциссы, при- надлежащая этой ломаной. Будем говорить, что горная цепь i находится строго выше горной цепи j в точке x, если выполнено строгое неравенство yi(x) > yj (x).

Естественно считать, что цепь под номером i пересекается с цепью под номером j, если су- ществуют такие два значения абсциссы x1, x2, что цепь i находится строго выше цепи j в точке x1, но при этом цепь j находится строго выше цепи i в точке x2, то есть выполнены неравенства yi(x1) > yj (x1) и yj (x2) > yi(x2). Обратите внимание на поясняющие рисунки, расположенные в примечании к задаче.

Вам необходимо определить, подойдет ли подобранный офис Васе, и, если нет, то найти любую пару пересекающихся горных цепей.

Формат входных данных 
В первой строке входных данных через пробел идут два целых числа: A и B (−109<=A < B<=109 ).
Во второй строке входных данных находится единственное число N — количество горных цепей, видимых из окна подобранного менеджером Васи офиса (1 <= N <= 100 000).
Далее следуют описания N горных цепей. В первой строке i-го описания содержится число li => 1 — количество звеньев ломаной, из которых состоит соответствующая горная цепь. В следую- щих li + 1 строках описания содержатся два целых числа — координаты (xi,j , yi,j ) вершин ломаной (0 <= j <= li). Суммарное число звеньев всех ломаных не превосходит 200 000.
Гарантируется, что для каждой горной цепи вершины соответствующей ей ломаной идут во входных данных в порядке возрастания абсциссы, причем для любого i выполнено xi,0 = A, xi,li = B.

Формат выходных данных 
Если же офис подходит Васе, то есть никакие две горные цепи из входных данных не пересека- ются, в единственной строке выходных данных выведите слово "Yes" (без кавычек).
Иначе выведите в первой строке слово "No" (без кавычек), а на следующей строке выведите два числа — номера двух пересекающихся горных цепей. Горные цепи нумеруются согласно их появлению во входных данных, начиная с 1.

Примеры
Ввод Вывод
-3 3
2
1
-3 2
3 1
2
-3 2
0 4
3 2
Yes
0 4
2
3
0 3
1 3
3 1
4 1
1
0 2
4 2
No
1 2


Замечание

Напоминаем, что абсциссой точки называется её x-координата, а ординатой — её y-координата. В первом примере хотя ломаные и касаются друг друга в точке (−3, 2), но, согласно данному выше определению, они не пересекаются. Во втором примере в точке x1 = 1 одна ломаная выше другой, а в точке x2 = 3 — наоборот, то есть горные цепи пересекаются.

 
Джон aka xXx_1337_7R1k$#073R_xXx учится великому искусству стрельбы без прицеливания. Он уже освоил несколько простых выстрелов, и сейчас он учится одному из самых основных - так называемому noscope 360. Это достаточно трудно, но у него наконец-то начало получаться, и теперь он хочет узнать, поразил ли он цель своим выстрелом (который мы представим в виде луча).
 
Входные данные
В первой строке вводятся 2 числа X0 и Y0 - координаты точки, в которой стоит Джон (-10 <= X0, Y0 <= 10).
Во второй строке вводятся 2 числа vX и vY - координаты вектора, по которому направлен луч (-10 <= vX, vY <= 10).
В третьей строке вводятся 2 числа X и Y - координаты цели (-50 <= X, Y <= 50).
 
Выходные данные
Выведите слово "Yes", если Джону удалось попасть, и "No" в противном случае.
 
Примеры
Входные данные Выходные данные
1
1 1
-1 1
-2 3
No
Свершилось чудо! Наконец-то вышел долгожданный Half-Life 3, о котором мечтали миллионы людей по всему миру! Вася тоже с нетерпением ждал продолжения легендарной серии, и даже не ел в школьной столовой целый месяц, чтобы ему хватило на покупку этого шедевра! Единственная проблема, которая стоит у него на пути - огромное домашнее задание по алгебре. В классе он прошёл новую тему - прямые, и теперь ему нужно сделать аж N задач на построение прямой через 2 точки. Но ведь так хочется поиграть, а на следующий день рассказывать друзьям, какой же там классный графон... Поэтому он попросил Вас, своего друга, помочь ему.
 
Входные данные
В первой строке вводятся координаты первой точки (X1, Y1), (\(-50 <= X_1, Y_1 <= 50\)).
Во второй строке вводятся координаты второй точки (X2, Y2), (\(-50 <= X_2, Y_2 <= 50\)).
 
Выходные данные
В единственной строке выведите подряд 3 целых числа: коэффициенты a, b, c уравнения прямой.
 
Примечание: если у вас не заходит задача, но вы уверены, что всё правильно - попробуйте умножить все коэффициенты на -1. Задача предполагает, что вы использовали формулы, взятые с лекции/теории.

 

Примеры
Входные данные Выходные данные
1
-1 -1
1 1
-2 2 0
В плоской стране наступила очередная зима, и нужно срочно переводиться на зимнее время! Проблема в том, что стрелка городских часов (единственная, кстати), находящихся в начале координат, очень-очень тяжёлая, и поэтому рабочие хотят узнать, в какую сторону крутить стрелку будет быстрее. Чтобы упростить вам задачу, они уже посчитали, куда указывает стрелка и куда она должна указывать. Помогите им!
 
Входные данные
В первой строке задаётся точка, куда указывает стрелка. Она задаётся координатами X1 и Y1 (\(-10 <= X_1, Y_1 <= 10\)).
Во второй строке задаётся точка, куда должна указывать стрелка. Она задаётся координатами X2 и Y2 (\(-10 <= X2, Y2 <= 10\)).
Координаты задаются вещественным типом.
 
Выходные данные
В единственной строке выведите "Clockwise", если стрелку нужно крутить по часовой стрелке, "Counter-clockwise", если её нужно крутить против часовой стрелки, и "Doesn't matter", если это займёт одинаковое время, в какую сторону её бы не крутили. Выводить фразы следует без кавычек.

 

Примеры
Входные данные Выходные данные
1
1 0
-1 1
Counter-clockwise
Недавно Венцеслав прочитал новую книгу по пикапу, и теперь он хочет опробовать свои знания в парке. Для простоты представим парк в виде набора тропинок, которые являются отрезками на плоскости. Венцеслав уже гулял в этом парке, и знает, какая девушка по какой тропинке гуляет. Проблема в том, что Венцеслав очень ленивый, и гуляет только по одной тропинке. А ещё ему лень узнать, каких девушек он может встретить по пути, и поэтому он попросил Вас, своего лучшего друга, помочь ему в этом непростом деле.
 
Входные данные
В первой строке вводятся координаты концов тропинки (X1, Y1) и (X2, Y2), по которой гуляет Венцеслав (\(-20 <= X1, Y1, X2, Y2 <= 20\)).
Во второй строке вводится целое число N - количество тропинок, по которым гуляют девушки (\(0  <= N <= 5\)).
В последующих N строках вводятся координаты концов тропинок, по которым гуляют девушки (Xi1, Yi1) и (Xi2, Yi2), по i-ой тропинке гуляет i-ая девушка (\(-20 <= X_{i1}, Y_{i1}, X_{i2}, Y_{i2}  <= 20\))
Координаты концов тропинок - вещественные числа.
 
Выходные данные
В первой строке выведите число M - количество девушек, пути которых пересекутся с путём Венцеслава (касание путей считается пересечением).
Во второй строке выведите M чисел - номера девушек, с которыми встретится наш герой. Девушки нумеруются с единицы!
 
Примеры
Входные данные Выходные данные
1
0 0 2 2
1
0 2 2 0
1
1

 

21752#21752
Как задается положение окружности на плоскости

1. координатами радиуса
2. координатами центра и длиной радиуса
3. длиной радиуса и его координатами
4. координатами диаметра и его длиной
Даны два числа - координаты точки, не совпадающей с началом координат. Найти полярные координаты точки, не совпадающей с началом координат.

Входные данные
Во входной строке содержится два целых числа - координаты точки. Числа целые, по модулю не превышающее 1000.

Выходные данные
Одно число - величина ее полярного угла (в радианах). Значение полярного угла должно принадлежать интервалу [0; 2*π).

 

Примеры
Входные данные Выходные данные
1 2 3 0.98279
Поделиться
Класснуть