2015-11-30 2 views
-2

Может ли кто-нибудь предложить динамический подход к программированию для решения этой проблемы?Как назначить n вещей для k пулов

Ваш районный школьный округ хочет вашей помощи! В школе есть дети, идущие в школу, и там - это k школ. Каждый ребенок должен пойти в школу, которая не более 5 минут в нескольких минутах ходьбы от его или ее дома. Это означает, что каждый ребенок может посещать только часть из k школ. Кроме того, каждая школа имеет ; обозначить емкость i-й школы ci , и пусть сумма будет равна всем емкостям. Учитывая данные о емкостях и список подходящих школ для каждого из русских детей, школьный округ хочет , чтобы узнать, имеется ли у детей соответствующее образование в школах. Создайте алгоритм полинома , чтобы ответить на этот вопрос.

+0

Можете ли вы рассказать нам, что вы думаете и код, который вы написали до сих пор? –

+0

напишите свой код здесь, чтобы мы могли проверить, что пойдет не так. – roottraveller

+0

Я думаю, что эта проблема представляет собой проблему с несколькими рюкзаками. Но здесь мне просто нужен алгоритм для понимания. –

ответ

0

см Max-flow min-cut (хотя и не подход DP)

  • Connect source всем N детей
  • Connect все K школы к sink
  • Connect каждого ребенка всех школ расстояние < = 5 мин
  • R ип потока алгоритм
  • Если max-flow равно N чем есть действительное Assignment

Сложность

Е.Г. алгоритм диница работает в O(VE log(V)) с в нашем случае

V = 1 + N + K + 1

E в [N+K - N+K+(N*K)]

Смежные вопросы