LINUX.ORG.RU

История изменений

Исправление 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)


В целом, ничего утешительного: с твоим количеством деревьев сложность получается не-полиномиальная.