【发布时间】:2018-01-21 07:26:31
【问题描述】:
"allocate minimum no of pages" problem 可以使用 DP 解决吗?
给你 N 本书。每 ith 本书有 Pi 页数。 您必须将书籍分配给 M 名学生。可以有许多方法或排列来做到这一点。在每个排列中,M 个学生中的一个将被分配最大页数。在所有这些排列中,任务是找到分配给学生的最大页数是所有其他排列中最小的特定排列,并打印该最小值。
每本书将只分配给一名学生。必须为每个学生分配至少一本书。
我知道这将是未经优化的,并且二进制搜索解决方案更有效,但据我了解,这可以解决吗?如果可以,记忆步骤或临时数组将是什么以及如何以自下而上的方式分解问题来解决使用 DP 吗?
【问题讨论】:
-
我认为这个问题的二分搜索解决方案确实使用了记忆化,但在这种情况下它不会形成任何重叠的子问题。在每个阶段,你只是在给定的学生之间分配书籍,最后挑选出尽可能少的书籍。我认为实际上不需要在这里申请DP。
-
您忘记了复制和粘贴使这适用于高效 DP 的关键信息:分配给学生的书籍必须是连续的这一事实。诚然,这被埋在原始链接中有关其他内容的注释中,但仍为 -1 表示努力。
标签: algorithm data-structures dynamic-programming