我有一个带有整数值对象的堆栈。我想买一辆容量为N(N未知)的卡车,以确保我可以在最大X圈内运输所有物体。
X是众所周知的。 换句话说,我必须对堆栈进行分区(必须保持对象的顺序)在总和小于N的最大X子集中找到最小N.
你能帮我算一个算法或想法吗? 感谢。
答案 0 :(得分:1)
如果您声明,"必须保持对象的顺序,"然后我们可以在N
O(|objects| * log m)
上使用二进制搜索来解决此问题,其中m
是总和。
关于多路编号分区的评论中链接的论文@hlt将适用于对象'订单可以重新排列。在这种情况下,在订单修复的情况下,我们可以尝试不同的N
,尽可能多地打包分区。如果我们选择的N
太小,我们最终会超过X
。这使N
有序,因此可以搜索。