Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Помогоите решить олимпиадную задачу

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DIMICH
А решать на каком языке программирования? Определись с языком и напиши в соответствующую прибитую тему данного раздела (прямо наверху: задачи на C/C++, задачи на Pascal, итд)

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 19:36 02-12-2007 | Исправлено: FuzzyLogic, 19:37 02-12-2007
Zlatogorov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DIMICH
Что то я не понял, в чём тут проблема может быть.
Обычные линейные уравнения: из 1го выделяем Х определённый через Z и Y, подставляем во второе, из него получаем Y выраженный через Z и подставляем в 3. Вторая задача аналогично. Програмно решается простым перебором.
А  вот про окружности надо подумать. Задача в концу концов сводится к планиметрии. Надо найти множество точек попадающих в пересечения заданных окружностей, вернее даже найти координаты фигуры, точки которой будут находится в пределах максимального количества пересекающихся окружностей. Вот приобрёл себе очередную головную боль, уж больно я задачи всякие люблю
 
07.12.07
Решил задачу для системы из 2х планет. Для большего количества решается рекурсией.
Если такие задачи люди решают на олимпиадах за 30 минут с выходом готового кода - снимаю шляпу.

Всего записей: 371 | Зарегистр. 26-11-2003 | Отправлено: 18:03 05-12-2007 | Исправлено: Zlatogorov, 12:29 07-12-2007
dderv

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я звиняйюс , а не стоит ли в этой задаче попробовать применить векторные преобразования вначале  ? Я не спец-т ,предположил ..

Всего записей: 1 | Зарегистр. 25-09-2007 | Отправлено: 10:14 10-01-2008
Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Я решал нечто подобное. Если не брать во внимание радиусы (то есть работать с точками). Разбиваем все точки на пары точек. Например, три точки: 1, 2, 3 разбиваются на 1 - 2, 1 - 3, 2 - 3. Пара точек - это некоторая прямая, проходящая через них, характеризующаяся в системе координат двумя параметрами - a и b (y = ax + b). Находим для всех пар эти a и b, занося их в отведенный массив (массив структур, т.е. a и b - это один элемент массива). Далее сортируем этот массив. В итоге, пробежав по массиву мы можем найти самую длинную последовательность пар точек, лежащих на одной прямой (то есть последовательность элементов с одинаковыми а и одинаковыми b в отсортированном массиве). Зная это число (число пар) можно определить и число точек, лежащих на одной прямой. Для не точек а шаров все аналогично, разве что при нахождении последовательности a и b сверяются не жестко а с учетом радиуса.
 
Параметр a для пары точек p1 и p2 считается так: a = (p1.y - p2.y) / (p1.x - p2.x);
b = p2.y - a*p1.x;

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 10:53 10-01-2008 | Исправлено: Jokerjar79, 10:56 10-01-2008
Kott



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
массивов должно быть как минимум два. Первый это массив пар. Второй - это массив отрезков. Они взаимосвязаны.

Всего записей: 161 | Зарегистр. 12-12-2003 | Отправлено: 01:56 12-01-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Помогоите решить олимпиадную задачу


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru