我正在努力解决这个问题 https://warmup.kattis.com/problems/vegetables
我想知道的是应该如何将蔬菜分成两部分。 如果我使wleft = wright = 1/2 * w,则无法获得与样本相同的输出。
在提示/提示/洞察中,他们写了 洞察力:所有切成一片的蔬菜都具有相同的重量。
但这对我没有任何意义。 1000 1400 会给我的 1400 - > 700 700 1000 没有比例是700/1000所以我们必须划分1000 1400 - > 700 700 1000 - > 500 500 现在我不知道我应该如何划分,因为在这种情况下我只能做3次分裂。
答案 0 :(得分:1)
这归结为广泛优先搜索削减数量以及不同可能的削减。首先,使用零切割检查解决方案,然后使用一个切割等检查所有解决方案,直到找到一个大小足够相等的解决方案。
注意:
结合上述三个注释,唯一值得考虑的优势是切割大量蔬菜的最大蔬菜。使用这些知识,您应该能够有效地实现此算法。
答案 1 :(得分:0)
问题不在于所有蔬菜应该分成两块。
它只告诉你你应该有更小的平均尺寸"最少的削减数量。
所以,如果一块蔬菜(即Brocolly)重2克,一块马铃薯重6克,那么,如果你不使用切口,平均值为4,比例为3比1。
但我在土豆中使用了3个切块,然后你得到4个2克,比例为1 ...
希望它有所帮助。答案 2 :(得分:0)
我可以在my Github找到使用python3解决此问题的方法。
如果您想首先尝试自己,我会专注于创建一个解决方案,您只需切割最大的一块并跟踪原始重量,这样您就可以在重复解决方案的同时“重新切割”新部件中的蔬菜。