Много точек, задача
От: MitjaT Россия  
Дата: 28.02.05 21:01
Оценка: 9 (1)
Даны до 500000 точек.

1. Найти точку с координатами, равными сред. арифм. координат данных точек (соответственно X и Y).

2. Вывести координаты точки (из числа введённых), самой ближайшей к полученной средней.

Координаты подаются на стандартный ввод, в массив их загонять нельзя — не пойдет по памяти. Количество точек задано.

P.S.: С первой частью программы все просто, а вот как оптимально сделать вторую, есть ли какие-нибудь идеи, кроме того, чтобы использовать файл? Иначе же никак? Ведь для нахождения ближайшей надо иметь доступ к координатам всех точек?
Re: Много точек, задача
От: BlackHeretic Израиль  
Дата: 01.03.05 06:58
Оценка:
Здравствуйте, MitjaT, Вы писали:

MT>Даны до 500000 точек.


MT>1. Найти точку с координатами, равными сред. арифм. координат данных точек (соответственно X и Y).


MT>2. Вывести координаты точки (из числа введённых), самой ближайшей к полученной средней.


MT>Координаты подаются на стандартный ввод, в массив их загонять нельзя — не пойдет по памяти. Количество точек задано.


MT>P.S.: С первой частью программы все просто, а вот как оптимально сделать вторую, есть ли какие-нибудь идеи, кроме того, чтобы использовать файл? Иначе же никак? Ведь для нахождения ближайшей надо иметь доступ к координатам всех точек?


Элементарно. При вводе каждой новой точки корректируешь среднюю координату, соответственно запоминаешь ближайшую точку — ту которая была прежде или нововведенную
ICQ 156156278
Re: Много точек, задача
От: pangolin  
Дата: 01.03.05 07:22
Оценка:
Здравствуйте, MitjaT, Вы писали:

MT>Даны до 500000 точек.


MT>1. Найти точку с координатами, равными сред. арифм. координат данных точек (соответственно X и Y).


MT>2. Вывести координаты точки (из числа введённых), самой ближайшей к полученной средней.


MT>Координаты подаются на стандартный ввод, в массив их загонять нельзя — не пойдет по памяти. Количество точек задано.


MT>P.S.: С первой частью программы все просто, а вот как оптимально сделать вторую, есть ли какие-нибудь идеи, кроме того, чтобы использовать файл? Иначе же никак? Ведь для нахождения ближайшей надо иметь доступ к координатам всех точек?


А есть какая-нибудь информация о распределении точек?
Или хотябы, в каких они пределах?
Re: Много точек, задача
От: Tan4ik Россия  
Дата: 01.03.05 08:30
Оценка: +4
Здравствуйте, MitjaT, Вы писали:

MT>2. Вывести координаты точки (из числа введённых), самой ближайшей к полученной средней.

Чуется мне, что ты нас обманываешь. Т.е. чего-то недоговариваешь.
Найдем среднее арифметическое N-1 точки.
Утверждение: последней точкой мы можем сместить центр масс в любую точку плоскости (достаточно решить два линейных уравнения). Значит мы можем сместить его на место любой из N-1 ранее обсчитанных точек, т.е. эта ранее обсчитанная точка будет самой близкой (ближе некуда). А т.к. все N-1 точки запомнить нельзя, то задача неразрешима.

P.S. Внимательно еще раз прочти условие. Нет, не внимательно, а ОЧЕНЬ внимательно.
---
С уважением,
Лазарев Андрей
Re[2]: Много точек, задача
От: Tan4ik Россия  
Дата: 01.03.05 08:34
Оценка: +1
Здравствуйте, BlackHeretic, Вы писали:

BH>Элементарно. При вводе каждой новой точки корректируешь среднюю координату, соответственно запоминаешь ближайшую точку — ту которая была прежде или нововведенную


(-1,0),(1,0),(3,0),(-7,0)
---
С уважением,
Лазарев Андрей
Re[3]: Много точек, задача
От: BlackHeretic Израиль  
Дата: 01.03.05 08:46
Оценка:
Здравствуйте, Tan4ik, Вы писали:

T>Здравствуйте, BlackHeretic, Вы писали:


BH>>Элементарно. При вводе каждой новой точки корректируешь среднюю координату, соответственно запоминаешь ближайшую точку — ту которая была прежде или нововведенную


T>(-1,0),(1,0),(3,0),(-7,0)


Мдя. Лажа получилась
Надо думать дальше.
ICQ 156156278
Re: Много точек, задача
От: MitjaT Россия  
Дата: 01.03.05 19:30
Оценка:
........
Нет, не обманываю, и даже не пытаюсь.
Я же писал:
"есть ли какие-нибудь идеи, кроме того, чтобы использовать файл?"
Т.е. нельзя записать в массив (из-за памяти), но можно в файл, но, конечно, не желательно, может быть критично по времени выполнения, но на крайний случай...
Re[2]: Много точек, задача
От: Tan4ik Россия  
Дата: 02.03.05 07:46
Оценка:
Здравствуйте, MitjaT, Вы писали:

MT>........

MT>Нет, не обманываю, и даже не пытаюсь.
MT>Я же писал:
MT>"есть ли какие-нибудь идеи, кроме того, чтобы использовать файл?"
MT>Т.е. нельзя записать в массив (из-за памяти), но можно в файл, но, конечно, не желательно, может быть критично по времени выполнения, но на крайний случай...
Похоже без файла не обойтись
Обычно такие задачи дают на олимпиадах, где входные данные поступают из файла. И решаются они методом "N раз прочесть файл". В данном случае достаточно двух прочтений.
---
С уважением,
Лазарев Андрей
Re: Много точек, задача
От: tavr  
Дата: 02.03.05 16:49
Оценка:
Здравствуйте, MitjaT, Вы писали:

MT>Даны до 500000 точек.


MT>1. Найти точку с координатами, равными сред. арифм. координат данных точек (соответственно X и Y).


MT>2. Вывести координаты точки (из числа введённых), самой ближайшей к полученной средней.


MT>Координаты подаются на стандартный ввод, в массив их загонять нельзя — не пойдет по памяти. Количество точек задано.


MT>P.S.: С первой частью программы все просто, а вот как оптимально сделать вторую, есть ли какие-нибудь идеи, кроме того, чтобы использовать файл? Иначе же никак? Ведь для нахождения ближайшей надо иметь доступ к координатам всех точек?

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

Естественно, чем стек больше тем меньше погрешность.
Можно решить задачу относительно параметра размера стека, определив его оптимальный размер, принимая условие, что в 99% в него должно попасть искомое значение.
Re[2]: Много точек, задача
От: DrZubr Беларусь  
Дата: 02.03.05 18:05
Оценка:
Здравствуйте, tavr, Вы писали:

T>А можно вместо массива иметь ограниченный стека из наиболее подходящих точек, скажем размером в 10.

T>после заполнения стека наименее подходящая отбрасывается.

Ну так Tan4ik ведь уже ж писал, что последняя точка может сместить центр масс в любую точку плоскости.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
ICQ [168117153]
Re[2]: Много точек, задача
От: Me_ Россия  
Дата: 05.03.05 12:52
Оценка:
Здравствуйте, tavr, Вы писали:

T>В этом случае, если распределение точек не слишком отличается, то к концу прохода в стеке будет хранится искомое значение.


Вот и вот — если распределение точек не сильно отличается, а в условии про это ни слова. Т.е. по дефолту — ничем не ограничено
Re: Много точек, задача
От: tiberius ICQ:1870700
Дата: 05.03.05 13:59
Оценка:
Здравствуйте, MitjaT, Вы писали:

MT>Даны до 500000 точек.


MT>1. Найти точку с координатами, равными сред. арифм. координат данных точек (соответственно X и Y).


MT>2. Вывести координаты точки (из числа введённых), самой ближайшей к полученной средней.


MT>Координаты подаются на стандартный ввод, в массив их загонять нельзя — не пойдет по памяти. Количество точек задано.


MT>P.S.: С первой частью программы все просто, а вот как оптимально сделать вторую, есть ли какие-нибудь идеи, кроме того, чтобы использовать файл? Иначе же никак? Ведь для нахождения ближайшей надо иметь доступ к координатам всех точек?


Используем среднее, полученное в первой задаче для решения второй.

Проще надо быть, проще!
ЭлектроБарахолка
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.