Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: извините.Задача C.
Что за тест 16????????????????????????

1
  1  Roland, 29 ноября 2009 г. 18:37:40
      Аааааа....понятно..я центр симметрии неправильно находил(( спасибо)))
  2  Делюкин Максим Викторович, 29 ноября 2009 г. 16:14:33
      С - решение.
Считываем все точки. Находим центр симметрии С как среднее арифметическое всех точек.
Далее для каждой точки i находим вектор Ai C, тоесть вектор, при отложении которого из вершины Ai переходим в центр симметрии С (вектор находится вычитанием координат С из координат Аi).
Попутно вместе с нахождением этого вектора проделываем следующую операцию. Заводим массив, где будем черкать точки. Если вектор Ai C равен (0, 0, 0), то точку вычеркиваем ( u[i] = 0 ), иначе её не вычеркиваем ( u[i] = 1 ).
Очевидно, что среди всех оставшихся точек симметричность относительно центра будет выполняться, если для каждого вектороа найдется противоположный по знаку.
После этого я сделал два вложенных цикла, в котором для каждой невычеркнутого вектора (точки) искал невычеркнутый ранее вектор (точку), чтобы выполнялась система { v[i].x = -v[j].x , v[i].y = -v[j].y , v[i].z = -v[j].z }.
При нахождении точки (вектора) i и j вычеркивались и поиск продолжался для следующей точки внешнего цикла (break).

Думаю, что можно было бы отсоритровать массив вектороы по x, y и z и проверить центральную симметрию массива. В таком случае алгоритм становится линейным вместо моего квадратичного. Но моё решение уложилось по времени.
  3  Нагин Сергей Юрьевич, 29 ноября 2009 г. 13:48:33
      Я не так делал....
  4  Roland, 29 ноября 2009 г. 13:47:48
      сначала сортирую по х
нахожу центр симметрии
далее случаи: если n нечетно и центр симметрии не совпадает со средней точкой моего массива точек то вывожу No
а иначе проверяю чтоб все точки были симметричны относительно этого центра
что-то не так?
  5  Нагин Сергей Юрьевич, 29 ноября 2009 г. 13:39:45
      А ты как делаешь?
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru