@ProCxx

Страница 2335 из 2477
Крис
08.09.2018
11:52:15
Это немного не то, но суть схожая

Mackenlly
08.09.2018
11:53:03
Alexander
08.09.2018
11:56:24
Оффтоп

Google
Matwey
08.09.2018
12:12:16
Попробуйте покурить диаграммы Вороного
Триангуляция Делоне ему нужна

Или нужно вообще все возможные треугольники выбрать?

Олег
08.09.2018
12:21:50
Ищем треугольники ABC, где AB = AC. Зафиксировали A (перебрали во внешнем цикле точку). Перебрали все остальные точки X, посчитали расстояния AX, отсортировали по нему или засунули в хеш-таблицу. Получили несколько групп точек с одинаковым расстоянием. Если в какой-то группе k точек, то это порождает k * (k - 1) / 2 треугольников — выбрать B и C из группы. Осталось вычесть крайние случаи: три точки на одной прямой (которые мы зря посчитали за треугольник) и равносторонние треугольники (которые мы посчитали три раза, а надо один), это оставляется читателю в качестве упражнения.

Matwey
08.09.2018
12:28:55
С чего это?

(0,0) (-2,-2) (2,-2)

равнобедренный треугольник

в чем нетрудно убедиться

Олег
08.09.2018
12:30:29
Ноль равносторонних, а просят равнобедренные. (Зато это ответ на вторую половину оставленного мной упражнения.)

Matwey
08.09.2018
12:31:00
Про равносторонние я согласен

Arseny
08.09.2018
12:36:53
Мне нравится уверенность с которой рекомендуют диаграмму Вороного.

Igor
08.09.2018
12:44:30
Мне нравится уверенность с которой рекомендуют диаграмму Вороного.
Диаграмма Вороного никогда не помешает! Например тут ее можно использовать вместо сортировки.

Google
Олег
08.09.2018
12:46:02
Диаграмма Вороного никогда не помешает! Например тут ее можно использовать вместо сортировки.
Нет, нельзя, тебе нужны не только ближайшие в каком-либо смысле точки.

Igor
08.09.2018
12:47:49
Нет, нельзя, тебе нужны не только ближайшие в каком-либо смысле точки.
В каком смысле? В вашем решении вы сортируете точки по расстоянию относительно фиксированной точки. То же самое можно сделать обходя треугольники в триангуляции. Асимптотика не улучшилась, зато диаграмма пригодилась!

Олег
08.09.2018
12:49:25
Ах вот так! Ну ладно, ладно :)

Constantine
08.09.2018
12:53:07
Вообще я не знаю, насколько честно оставлять читателям упражнение "посчитайте число равносторонних треугольников с целыми координатами"

Mackenlly
08.09.2018
13:33:32
Я понял, спасибо огромное!

Юра Незнанов
08.09.2018
13:37:11
Basil
08.09.2018
14:00:34
лобовое решение: для N точек имеем N*(N-1)/2 отрезков между ними. вычисляем их, сортируем, потом проверяем все равные на принадлежность общей вершине.

short int достаточно, это меньше 4.5 млн на отрезок.( индексы координат + длина)

Ilia
08.09.2018
14:30:41
что вместо его можно юзать?
Ну, например, можно просто использовать глобальную переменную, если не фанатствовать с этим

Вообще Синглтон зачем нужен? Он просто переводит зависимость функции от переменной в разряд зависимостей функции от функции.
С учётом того, что найти функцию и переменную одинаково сложно, в общем, все напрасно. Т.е. конечно немного вызов функции чуть более грибок чем ссылку на переменную, но кардинально разницы мало.Может я сейчас конечно что-то забыл и упустил из виду, но по большому счету это так.

Google
Дмитрий
08.09.2018
15:50:52
Не, это хуже...
Насколько?)

Дмитрий
08.09.2018
15:56:12
А конкретнее можно?))

Igor
08.09.2018
15:58:06
Вместо сортировки чего?
Расстояний от фиксированной точки до всех остальных. Это сообщение было сарказм, можно расслабиться :)

Ⱪonstantin
08.09.2018
15:59:00
Есть множество точек, нет повторяющихся. Из этих точек нужно выбрать все равнобедренные треугольники. Количество точек 1500 макс
Точек 1500. Значит расстояний всего 2.2*10^6. Кладём все отрезки в массив, сортируем, выбираем одинаковые. Всё, конец истории, решается за квадрат * лог

Ilia
08.09.2018
15:59:33
А конкретнее можно?))
Блин,UB это UB. Это значит по русски "хрен знает" или "хер проссыт" , но это не безнадежно! Это не обязательно, что не будет работать! Это неизвестность. А вот вызов функции с тремя параметрами с указанием только одного параметра - это гарантированная, 200% ная жопа.

Дмитрий
08.09.2018
16:00:52
Мне казалось человек наоборот хочет, передать однопараметровую в качестве трех

Ⱪonstantin
08.09.2018
16:01:05
1500*1500=2.250.000 отрезков

Sheldon
08.09.2018
16:10:59
template <typename T> struct Base { using Item = typename T::Item; }; struct X {}; struct Derived: Base<Derived> { using Item = X; }; Такое не компилируется, как обходить?

Дмитрий
08.09.2018
16:25:11
Очень много хочешь)

Модно в шаблон добавить параметр чему равен Item

Google
Дмитрий
08.09.2018
16:25:36
С дефолтным

Sheldon
08.09.2018
16:26:28
Модно в шаблон добавить параметр чему равен Item
Собственно сейчас оно так и есть. Проблема в том что в Base нужно пробрасывать не один тип, а несколько, что весьма неудобно.

Andrew
08.09.2018
16:27:48
Вроде сторонним трейтом должно быть можно.

Sheldon
08.09.2018
16:28:18
Хм, вроде вариант.

Matwey
08.09.2018
16:28:42
. Расскажи нам....
Там кастинг указателей на функции

Точки в эвклидовом пространстве

Делаем R-tree

Строим сетку Делоне

Аааа

Я забыл, что вам нужны любые треугольники

Да пусть даже и так.

Andrew
08.09.2018
16:34:57
Да нет там NP никак, задача сверху оценивается как N^3, решение уже предложили на N^2

Andrew
08.09.2018
16:44:25
N^2 log N так-то :)
Смотря какое решение. С сортировками — да.

Matwey
08.09.2018
16:44:39
Тут надо догадаться какие индексы построить

Вообще задачу можно записать в виде SQL запроса

И отсюда станет понятно мне кажется

Google
Dadaskis
08.09.2018
17:39:54
Итить вы тут дружелюбные.
Это ещё не бомбит

Anton
08.09.2018
17:42:38
Налицо детская травма. Но вот почему? Чем DI жизнь то испортил? (Как идея, а не пример где кто-то не умеет готовить)

Myvaheed
08.09.2018
20:42:30
Что тут происходит вообще?

Matwey
08.09.2018
21:19:45
@burunduk3 привел выше конструктивное решение

Ilia
08.09.2018
21:20:25
Все уже, не катит...я сплю

Страница 2335 из 2477