Задать вопрос
@alex_agaphe

Как лучше восстановить индексы в n-мерном рюкзаке с точным весом?

Задача №3094. Гирьки: три кучки
Дан набор гирек массой m1, …, mN. Можно ли их разложить на три кучки равной массы?
https://informatics.msk.ru/mod/statements/view.php...
Пока идея 3 мерный массив где dp[i][w1[w2] хранится номер рюкзака если можно с данным индексом составить рюкзаки веса w1 и w2 и -1 я если невозможно составить данные веса но как потом восстановить индексы?
  • Вопрос задан
  • 41 просмотр
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Для восстановления вам нужен второй массив, где вы храните одно из 3 значений - в какой из трех наборов идет i-ая гиря. Когда считаете dp и пишите, что можно составить i, w1, w2 вы же эти значения получили куда-то поместив последний элемент. У вас или к w1 что-то было прибавлено, или к w2, или никуда. Это 3 варианта.

При восстановлении начните с N, sum/3, sum/3 и в цикле вычитайте 1 из первого индекса и вес i-й гири или не вычитайте или вычитайте из одного из весов, в зависимости от сохраненного знаяения во втором массиве.

Можно вместо второго массива в dp хранить 0, если это состояние невозможно и или номер кучки для последней гири.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы