Блог пользователя DaurenMuratov

Автор DaurenMuratov, 13 лет назад, По-русски

Доброе времени суток. Не можете ли помочь с такой задачой.

У Пети накопилось много картонных коробок. Они ему еще послужат службу в будущем, но сейчас он хотел бы от них избавиться -- сдать в камеру хранения. В камере хранения за каждое место берут деньги. Помогите Пете уложить коробки друг в друга так, чтобы плата за их хранения была минимальна.

Известно, что никакие две коробки не поместятся ни в какую другую, если их поставить рядом. Коробка со сторонами x1, x2, x3, x1 >= x2 >= x3, помещается в коробку со сторонами y1, y2, y3, y1 >= y2 >= y3, если x1 < y1, x2 < y2, x3 < y3.

Минимальное число коробок, в которые все остальные можно поместить.

Задачу решаю с помощью нахождения максимального парасочетания. Искал google' решение данной задачи, но не нашел, единственное что нашел это то что задача решается нахождением всех максимальных паросочетании.Я нахожу 1 маскимальное парасочетание, и не знаю как находить остальные. Буду очень благодарен!

  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
м? непонятно, зачем нам все паросочетания? Делаешь так: строишь двудольный граф - слева вершины соответствуют коробкам и справа соответствуют коробкам. Ребро есть, если коробка справа поместится в коробку слева. Строишь паросочетание и размещаешь согласно ему.
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
    Я и расместил согласно ему и что делать дальше?
    • 13 лет назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится
      эмм? Дальше все. Тебе известно какая коробка в какой лежит так, чтобы это было оптимально. Число коробок - мощность паросочетания = число занятых мест.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        А я не дописал условие теперь нормально. 
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Хм... Что-то изменилось? По-моему мое решение все еще работает...
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
 ...если их поставить рядом! А если не ставить рядом, а складываешь одну в другую? То получается можно сколько угодно?
Если так, то я бы решал такой жадной динамикой: завел бы структурку длина-ширина-высота, посортил бы ее и для каждой коробки пытался бы поставить ее-вместе со всем содержимым-в большую. При таком условии(если ты все правильно написал) это будет правильным решением
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Я не понял. Надо вывести количество способов?
  • 13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Минимальное число коробок, в которые все остальные можно поместить.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
По-моему, задача решается обычной динамикой как LIS(Longest increasing subsequence)...
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Вот задача.
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
Решил... Построим двудольный граф. В каждой доле будет по N вершин. Запускаем Куна. Ответ = N - размер паросочетание.