Ctrl K

Дерево из произведений листьев

Средняя
Дан массив положительных чисел leaves. Рассмотрим все бинарные деревья, у которых: - у каждого узла либо 0, либо 2 ребёнка; - листья, прочитанные слева направо, дают ровно массив leaves; - значение каждого внутреннего узла равно произведению наибольшего листа в его левом поддереве на наибольший лист в правом. Среди всех таких деревьев найдите минимальную сумму значений внутренних узлов и верните её.
Пример 1
leaves=[3, 5, 2] → 25

Сначала объединим 5 и 2 (узел 10), затем 3 с этим поддеревом (3 × 5 = 15): сумма 25. Если начать с 3 и 5 (15), а потом добавить 2 (5 × 2 = 10), тоже 25. Меньше не получится.

Пример 2
leaves=[6, 9] → 54

Единственное дерево: один внутренний узел 6 × 9 = 54.

Пример 3
leaves=[1, 8, 1, 8] → 80
Ограничения
  • 2 ≤ len(leaves) ≤ 40
  • 1 ≤ leaves[i] ≤ 15
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПрыжки по камням СредняяПодъём отрезками СложнаяПолзунки эквалайзера по пресету СложнаяПерестроить середину шеренги СредняяБольше всего кусков для сортировки Средняя
загружаем Python…
Вход
leaves=[3, 5, 2]
Ожидается
25

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 95 тестов на сервере, включая скрытые.