如何将n个东西分配到k个池

时间:2015-11-30 04:04:49

标签: algorithm dynamic-programming

有人可以建议动态编程方法来解决这个问题吗?

您的社区学区需要您的帮助! 在你的学区和那里有n个学校的孩子 是k学校。每个孩子都需要去一所最多5分钟的学校 离他或她家很近。这意味着每一个 孩子只能参加k学校的一部分。而且,每所学校都有 容量;用ci表示第i所学校的能力 ,并且总和 所有容量都等于n。给出有关容量的数据,以及 学区想要的每个n个孩子符合条件的学校名单 知道学校是否有有效的子女分配。设计一个 多项式算法来回答这个问题。

1 个答案:

答案 0 :(得分:0)

  

参见Max-flow min-cut(虽然不是DP方法)

  • source与所有N个孩子相关联
  • 将所有K所有学校连接到sink
  • 将每个孩子连接到距离<= 5分钟
  • 的所有学校
  • 运行流算法
  • 如果max-flow等于N而不是有效作业
  

复杂性

E.g。在我们的案例中,Dinic的算法在O(VE log(V))中运行

V = 1 + N + K + 1

[E - N+K]

中的

N+K+(N*K)