在看到最近的algorithm问题之后,我回想起我曾经看过并解决的一个有趣的问题,但现在已经忘记了解决方案。希望有人能指出我正确的方向。
你有一堆K
块木头,大小各异。您将获得C
'切割',您可以在木材的任何位置切割一块木头,将切割的碎片返回到木材堆中。您的目标是确定M
,max(pile) - min(pile)
的最小值。
输入:
Line 1: Two space separated characters, K C
Lines 2..K+1: A single real number representing the length of a piece of wood (of the K).
输出:
M
约束:
K < 500 000
C < 1 000
限制
~10 sec runtime on an average PC with ~256 meg RAM limit'd.
答案 0 :(得分:0)
对于{1,...,k}中的i,设L i 为片段i的初始长度并初始化C i ,等间距切割的数量i,到0.重复C次:令j = argmax i L i /(1 + C i )并增加C Ĵ子>