Pull to refresh

Comments 18

Насколько я понимаю, после каждой итерации нужно получать верёвки минимальной длинны, т.е. по сути мы создаем массив из длин веревок и соединяем первую и последнюю, вторую и предпоследнюю и тд, и так на каждой итерации.

Это очень сильно напоминает главу из книги Перельмана ("Занимательная арифметика" если не ошибаюсь) где учитель дал ученикам задачу сложить все числа от 1 до 100..

И одним из этих учеников был Гаусс, да? =)

Но почему в Вашем решении получится оптимальная стоимость всё-таки?

не знаю, интуиция)

а вот объясните мне, пожалуйста, откуда вот тут 39 взялось:

  • Сначала соединим 10 и 5, потом соединим 21 и 3, после чего соединим две полученные верёвки. Стоимость: 15+24+39=78.

мы же соединили
1) 10 + 5 = 15,
2) 21 + 3 = 24,
3) 24 + 15 = 39

Ответ: 39

Или я неправильно условие задачи понимаю?

3+5 = 8, 8+10 = 18, 18+21 = 39.


Итого: 8+18+39= 65


Сильно меньше ваших 78.

я получается неправильно условие задачи понял, думал что после каждой итерации мы получаем новую веревку и её складываем со следующей, а не то, что нужно найти сумму всех складываний веревок - тогда, конечно, надо складывать минимальные по очереди :)

UFO just landed and posted this here

Вторую минимальную необязательно извлекать из кучи. Можно к ней добавить первую (которую извлекли) и просеять вниз, будет чуть меньше действий.

Интуитивно, на каждом шаге нужно соединять две самые короткие на данный момент верёвки.

Достаточно доказать, что можно первым шагом две минимальные веревки объединить. А дальше, после первого шага, задача сводится к той же самой.


Если представить дерево, как эти веревки сливаются, то там листья — это входные числа, а промежуточные вершины отвечают объединениям. Каждый лист посчитается в ответе ровно столько раз, какая у него глубина. Значит можно жадно минимальные веревки запихивать как можно глубже. Не факт, что это уже будет оптимальный ответ, ведь может самое дерево надо переформатировать, но то, что в оптимальном ответе первый шаг, это две минимальные веревки, уже доказано.

Из России как оплатить можно? Мир не принимает, платеж визой не проходит, якобы потому что банк отклоняет, но подозреваю, что из-за ограничений визы.

Оказывается, что из России никак, к сожалению. Я вот и сам этого не знал.

Я посмотрел правила площадки, если вы выставите цену в рублях за курс, то платежи пойдут через ю-кассу, которая поддерживает мир и работает с российскими картами. Не знаю, насколько это применимо в вашей ситуации - но если получится, было бы здорово.

Если выставить в рублях, то не сможем в долларах принимать, к сожалению, как выяснилось.

Два курса? :) Дикие времена, конечно.

Sign up to leave a comment.

Articles