Найдите высоту круга, видимая площадь которого (не покрытая прямоугольниками) составляет половину общей площади.JAVA

Программисты JAVA общаются здесь
Anonymous
Найдите высоту круга, видимая площадь которого (не покрытая прямоугольниками) составляет половину общей площади.

Сообщение Anonymous »

Описание проблемы
Я пытаюсь найти высоту центра круга (H) относительно горизонта (ось X). Солнце представляет собой круг радиусом $R$, а его центр всегда находится в точке (0, H).
Горизонт – это ось x (y = 0). Имеется N небоскребов, представленных в виде прямоугольников. Каждый прямоугольник $i$ определяется его левой координатой x (x_i), шириной (w_i) и высотой (h_i). Прямоугольники расположены на горизонте, что означает, что их диапазон y равен [0, h_i].
Правила видимости:
  • Часть солнца видна, только если она находится над горизонтом (y > 0).
  • Часть солнца не видна, если она закрыта рядом со зданием.
  • Здания не перекрываются, но могут соприкасаться.
Задание:
Определить высоту $H$ центра круга над горизонтом так, чтобы общая видимая площадь составляла ровно половину общей площади Солнца (\pi R^2 / 2).
Ограничения:
  • N: количество небоскребов
  • R: радиус Солнца
  • Здание i охватывает диапазон x [x_i, x_i + w_i] и диапазон y [0, h_i].
  • h_1 и h_n \le R
  • |h_i - h_{i-1}| \le R
  • Координаты x_i и размеры w_i, h_i находятся в диапазоне от -100 до 100.
Пример 1:
Входные данные: 0 42 (0 зданий, радиус 42)
Выходные данные: 0,000000 (Видимая область равна половине, когда центр находится точно на горизонте)
Пример 2:
Ввод:

Код: Выделить всё

3 4
-3 1 1
-2 1 2
0 2 2
Выход: 0,882205282305

Подробнее здесь: https://stackoverflow.com/questions/798 ... s-half-the

Вернуться в «JAVA»