Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 18.11.2022
Сообщений: 2

Найти координаты и максимальный радиус фонтана

18.11.2022, 02:19. Показов 541. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача на PascalABC, примерно понимаю, а реализовать не могу

Задача 16 Фонтан

Имя входного файла: INPUT.TXT
Имя выходного файла: OUTPUT.TXT
Максимальное время работы на каждом тесте: 10 секунд

Администрация одного института решила построить в холле фонтан, По плану администрации, фонтан должен иметь форму круга с максимально возможным радиусом. Дизайнеру сообщили, что холл института имеет вид прямоугольника, размером X×Y метров. Однако когда дизайнер стал выбирать место для фонтана, он столкнулся с серьезной проблемой: в холле института обнаружилось N круглых колонн, снести которые не представляется возможным.

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

Формат входных данных

На первой строке входного файла находятся вещественные числа X и Y, 1 ≤ X, Y ≤ 104. Будем считать, что прямоугольник холла расположен на координатной сетке так, что его углы имеют координаты (0, 0), (X, 0), (X, Y) и (0, Y).

На второй строке находится число N (0 ≤ N ≤ 10) - количество колонн. Следующие N строк содержат параметры колонн - i-я строка содержит три вещественных числа Xi, Yi и Ri - координаты центра и радиус i-й колонны ( Ri ≤ Xi ≤ X-Ri , Ri ≤ Yi ≤ Y-Ri

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
0.1\leq R_i\leq \min\left(\frac{X}{2},\,\frac{Y}{2} \right);<br />

для любых i ≠ j

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\sqrt{\left(X_i-X_j \right)^2+\left(Y_i-Y_j \right)^2}\geq R_i+R_j<br />

).
Все числа во входном файле разделены пробелами.

Формат выходных данных

Выведите в выходной файл три вещественных числа: XF, YF и RF - координаты центра и радиус фонтана. Фонтан должен быть полностью расположен внутри холла (допускается касание стен) и не иметь ненулевого пересечения ни с одной из колонн (допускается касание). Радиус фонтана должен быть максимален, Разделяйте числа пробелами и/или переводами строки. Если решений несколько, выведите любое из них.

Примечание о точности вычислений
При проверке результата работы Вашей программы нарушение условий оптимальности и отсутствия пересечения со стенами и колоннами менее чем на 10-2 будет игнорироваться.

Примеры

IUNPUT.TXTOUTPUT.TXT
10 20
0
5.000 5.000 5.000
20 20
4
2 2 2
18 2 2
2 18 2
18 18 2
10.000 10.000 9.314
20 20
4
2 2 2
18 2 2
3 17 2
16 16 4
9.510 7.054 7.053
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2022, 02:19
Ответы с готовыми решениями:

На множестве точек нужно рассчитать координаты центра и радиус круга который бы имел максимальный радиус
Есть такая задача: На заданом своими координатами множестве точек нужно рассчитать координаты центра и радиус круга который бы имел...

Найти координаты всех вершин правильного многоугольника, зная координаты центра и радиус описанной окружности.
Дан правильный N-угольник с центром в точке (X, Y) и с радиусом описанной окружности R. Найти координаты всех вершин многоугольника. ...

Найти радиус и координаты центра вписанной в тетраэдр сферы, если известны координаты вершин тетраэдра
Хотелось бы узнать как решить эту задачу. Предполагаемое решение:

2
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
18.11.2022, 15:47
Цитата Сообщение от xmp_1 Посмотреть сообщение
примерно понимаю, а реализовать не могу
прости, а что ты "примерно понимаешь"? Расскажешь, как бы ты решал эту задачу без программирования, просто алгоритм?
я, например, не понимаю, какой алгоритм решения данной задачи
0
0 / 0 / 0
Регистрация: 18.11.2022
Сообщений: 2
23.12.2022, 01:50  [ТС]
Расскажу, суть задачи заключается в поиске максимального радиуса фонтана в холле, размер холла задает пользователь, и в этом холле так же имеются колонны, количество, размер и положение которых тоже задает пользователь. Возьмем в пример уже приведённый второй пример в задаче, входные данные: размер холла 20 20 т.е. это x и y = 20, квадрат получается, далее следующая строка 4, это 4 колонны, будет N = 4, дальше идет 4 строки, в каждой по 3 числа, то есть параметры каждой колонны. Первая колонна 2 2 2, первые 2 числа это координаты xy, 3 число это радиус, xi = 2, yi = 2, r = 2. И с остальными так же. Представим это в виде координатной плоскости, клетки например. Поле 20 на 20 клеток, расположены колонны, к примеру первая на клетке 2 и 2 от первой координатной точки, т.е. от нуля, слева сверху получается и остальные колоны, по итогу второго примера у нас получается что 4 колонны находятся по углам нашего поля, т.е. холла. Радиус каждой колонны 2, то есть диаметр 4, одна колонна занимает 4 клетки по x и y, касается стен холла. Наша задача вычислить какой фонтан мы вместим в свободную часть всего вместе взятого, допускается касание стен холла и колонн. Пример хорош тем, что все размеры одинаковы и колонны одинаково стоят по углам, тем самым в выходных данных фонтан имеется положение 10 10, т.е. центр холла на 10 клетке по x и y, а его радиус 9.3 (диаметр 18.6) потому что если мы проведем круг от середины холла, заметим, что фонтан не коснулся стен колла, он уперся в края колонн, от того и радиус не 10. Теоретически мы разобрались и задаче и ее смысле, в программе мы можем сделать ввод с клавиатуры всех данных, пользователь вводит XY холла и N колонн, присваиваем значения к переменным, далее сделаем массив в цикле, массивы к примеру Xm, Ym, Ym от 0 до 3, то есть 3 параметра задает пользователь, цикл например for который повторяется N раз, и выходит что, исходя из того же примера выше пользователь введет 4 раза по 3 параметра для каждой колонны Xm[i] Ym[i] Rm[i]. Все, размер холла X Y есть, количество колонн N есть, параметры для каждой колонны X[i] Y[i] R[i] есть. Далее и заключается задача, выполнение в том, что нам нужно определить, даже не касаясь программы, просто геометрически, если нам даны все эти данные, какого радиуса выйдет фонтан, каков будет его центр на плоскости и радиус, и тут я уже не знаю как решить. Есть варианты, что можем вычесть колонны из холла, тем самым уменьшим стороны холла, но оставим его пустым, далее уже определяем фонтан, может не так, я в этом путаюсь и не могу прийти к решению, в вот после нахождения решения, уже реализовать это в программе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2022, 01:50
Помогаю со студенческими работами здесь

Найти координаты центра и радиус сферы
Найти координаты центра и радиус сферы, заданной уравнением x2 + y2 + z2 – 2x + 4y + 1 = 0. Как расположены относительно этой сферы точки...

Найти координаты центра и радиус сфер
Найти координаты центра и радиус той из сфер, касающихся прямой (см. вложение) и одной из осей координат, радиус которой минимален.

Окружность, вписанная в многоугольник (найти координаты центра и радиус)
Мне нужно написать программу, которая бы по заданным точкам вычисляла координаты центра вписанной окружности и радиус этой окружности....

Окружность Фейербаха. Найти радиус и определить координаты центра
Даны некоторые точки (x1, y1), (x2, y2), (x3, y3), которые являются координатами вершин треугольника. Как можно исходя из этих данных...

Составить уравнение плоскости и найти координаты центра и радиус окружности
Дано уравнение сферы S. а) Составить уравнение плоскости,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru