Size: a a a

2020 October 25

ЕВ

Евгений Вознесенский... in pro.algorithms
В общем, мне эта задача выпала на хакерранке в контесте на 2 часа. Это была 4-я задача из 4-х.
Я её не решил, поэтому и стало интересно, как это решать ...
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
Matwey Kornilov
берешь большой прямоугольник min(x) min(y) max(x) max(y), он описывает все точки.
дальше ищешь как его поделить на два. таких способов будет 2(N-1), из них надо выбрать способ с минимальной суммой площадей.
потом каждый прямоугольник опять делишь пока не кончатся свободные прямоугольники
А почему способов будет 2*(n-1)?
Тип вертикально или горизонтально разбить по одной из точек?
источник

MK

Matwey Kornilov in pro.algorithms
ну можно разбить прямоугольник вертикально или горизонтально
источник

MK

Matwey Kornilov in pro.algorithms
для каждого варианта N-1 способ
источник

MK

Matwey Kornilov in pro.algorithms
или N-2
источник

MK

Matwey Kornilov in pro.algorithms
это зависит от того можешь ли ты одну точку описать прямоугольником нулевой площади?
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
Можешь
источник

MK

Matwey Kornilov in pro.algorithms
или как этот случай описывается
источник

MK

Matwey Kornilov in pro.algorithms
Ну значит N-1
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
Да, но когда прямоугольников будет m. То нам нужно для каждого прямоугольника рассмотреть разбиение, чтобы определить лучшее на текущем шаге?
источник

MK

Matwey Kornilov in pro.algorithms
не, m прямоугольников делается за log(m) шагов
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
Ну например мы нашли оптимальное деление первого прямоугольника на два. Какой мы дальше из них будем делить?
источник

MK

Matwey Kornilov in pro.algorithms
оба
источник

MK

Matwey Kornilov in pro.algorithms
по очереди
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
Ну вот очередь деления не будет ли влиять на ответ?
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
Тип да, мы нашли оптимальное деление для первого прямоугольника из двух полученных и использовали все k прямоугольников. Для второго не осталось, например
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
Насколько я понял, то это будет не рекурсия, а именно bfs? Тип если считать, что прямоугольник i-d получен на шаге d, то в дальнейшем делении будут только прямоугольники i-d+?
источник

MK

Matwey Kornilov in pro.algorithms
Я предлагаю строить бинарное дерево
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
Ну так а строить по уровням?
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
Или в глубину?
источник