История изменений
Исправление Manhunt, (текущая версия) :
Тебе в любом случае придётся прикоснуться к каждому из деревьев, иначе есть риск, что максимум доставляет именно то дерево, к которому ты не даже прикасался.
Нужно ли для каждого дерева вычислять его минимум? Не обязательно, вычисление можно оборвать, как только станет ясно, что это дерево не вносит вклада в конечный результат.
max_value = -inf
foreach tree in trees
min_value = +inf
foreach leaf in tree
min_value = minimum(min_value, get_value(leaf))
if(min_value < max_value) break;
max_value = maximum(max_value, min_value)
В целом, ничего утешительного: с твоим количеством деревьев сложность получается не-полиномиальная.
//тред не читал
Исходная версия Manhunt, :
Тебе в любом случае придётся прикоснуться к каждому из деревьев, иначе есть риск, что максимум доставляет именно то дерево, к которому ты не даже прикоснулся.
Нужно ли для каждого дерева вычислять его минимум? Не обязательно, вычисление можно оборвать, как только станет ясно, что это дерево не вносит вклада в конечные результат.
max_value = -inf
foreach tree in trees
min_value = +inf
foreach leaf in tree
min_value = minimum(min_value, get_value(leaf))
if(min_value < max_value) break;
max_value = maximum(max_value, min_value)
В целом, ничего утешительного: с твоим количеством деревьев сложность получается не-полиномиальная.