Size: a a a

2021 June 07

EZ

Evgenii Zheltonozhsk... in pro.algorithms
мб там какой-то хитрый прямоугольник
источник

EZ

Evgenii Zheltonozhsk... in pro.algorithms
интуитивно нет конечно
источник
2021 June 08

TS

Tigran Saluev in pro.algorithms
контент, который мы заслужили
источник

ДЖ

Дима Жигальов... in pro.algorithms
источник
2021 June 09

T

Toideng in pro.algorithms
а существует ли какой-нибудь алгоритм, позволяющий на лету объединять отрезки?
источник

T

Toideng in pro.algorithms
я посмотрел в сторону дерева отрезков, но оно, видимо, только позволяет их хранить как отдельные сущности
источник

PO

PROLOG ONE LOVE in pro.algorithms
В смысле? Даны n отрезков от a до b и надо их объединять? Просто берешь и объединяешь
источник

T

Toideng in pro.algorithms
они даны в случайном порядке
источник

PO

PROLOG ONE LOVE in pro.algorithms
Ну отсорть
источник

T

Toideng in pro.algorithms
по сути это как сделать побитовый OR очень большой битовой карты
источник

PO

PROLOG ONE LOVE in pro.algorithms
Засунь в сет
источник

PO

PROLOG ONE LOVE in pro.algorithms
Померджи
источник

FO

FORTRAN ONE LOVE in pro.algorithms
ага... отсортировать (1) по началу в возрастающем порядке, и (2) по концу в убывающем порядке (память будем экономить)
затем просто проверять границы
источник

T

Toideng in pro.algorithms
ну наверное хватит отсортировать даже просто по началу
источник

FO

FORTRAN ONE LOVE in pro.algorithms
ну.. если ещё и по концу сравнивать, то можно прям в процессе сортировки будет часть элементов выкидывать
источник

DP

Defragmented Panda in pro.algorithms
а что если так:

берем пустое дерево отрезков

берем случайный отрезок из данных нам

делаем поиск в дереве отрезков на наличие отрезков  перевекающихся с тем что мы взяли

если пересечений нет - добавляем новый отрезок в дерево. если пересечения есть - мержим отрезок и тот с которыми он пересекается

что-то около O(N*logN), работает на лету, не нужно сортировать входящие данные
источник

DP

Defragmented Panda in pro.algorithms
детально:

если пересечение - удаляем "внутренние" концы обоих отрезков и делаем более длинный отрезок.

если один отрезок включает другой - удаляем более мелкий отрезок.
источник
2021 June 10

GK

Gregory Koshelev in pro.algorithms
Всё бы ничего, но добавляемый отрезок может включать больше двух уже существующих.
источник

GK

Gregory Koshelev in pro.algorithms
(—[1]——[-2-]——[3]—)
источник

GK

Gregory Koshelev in pro.algorithms
Хотя я не прав: достаточно найти самый левый и самый правый отрезок с пересечением, а потом выкинуть внутренние поддеревья.
источник