【发布时间】:2012-06-14 18:09:36
【问题描述】:
图书馆中有N 的书籍,其中ith 书籍的页数由b_i 提供。这些书籍将分发给K 学生,以便对于给定的输入,分配给任何学生的书籍中的最大页数总和与分配给任何学生的书籍中的最小页数总和之间的差异是最小的。书籍也按一定的顺序排列,这个顺序永远不能改变。
例如:
假设B[] 包含每本书的页数。
那么对于N=6K=3B={3,7,8,2,6,4},输出将是0,因为我们可以将第 1 册和第 2 册给学生 1,将第 3 册和第 4 册给第 2 学生,剩下的给第 3 学生。这使得学生 1 为 10 页,2 为 10 页,3 为 10 页,因此差异为 0
同样,B={3,6,8,2,6,4} 则最小差值为 1。
【问题讨论】:
-
这是作业吗?
-
我不在乎这是否是家庭作业。这对我来说就像一个 NP 问题,如果不是,我很想知道一个优雅的解决方案。感觉有点像子集总和问题,但我们甚至不知道我们要提前寻找的总和。另一方面,它是一个有序集,所以这可能会有所帮助。当然,这可能应该移动到:cstheory.stackexchange.com
-
这不是家庭作业!这是 Directi 的最后一道面试题。
标签: algorithm