【发布时间】:2016-03-15 10:29:28
【问题描述】:
有n (n < 1000) 个朋友组,组的大小由数组A[] (2 <= A[i] < 1000) 表征。表格的存在使得它们一次可以容纳r(r>2) 人。每个人就座所需的最少桌子数量是多少,受制于每个人都应该有他/她的小组中的另一个人坐在他/她的桌子旁。
我想的方法是将每个组分成三三两两的大小并尝试解决这个问题,但是有很多方法可以将数字n分成三三两的组,并不是所有的都可以是最优的。
【问题讨论】:
-
嗯。我对此思考得越多,我想到的边缘案例就越有趣。即,r=3(总是可解的边缘情况)和 r=2(仅有时可解)。话虽如此,我认为这仍然不是非常困难。
-
@MooingDuck 进行编辑,r 总是大于 2。
-
@SHB 这个问题等同于“在最小的桌子排列中必须有多少个空座位?”那一个可能更容易考虑,因为有很多方法可以安排人们在桌子上,但很少有人强迫自己有很多空位的桌子。
-
@btilly:如果
r很大,那就是真的。对于像r==3这样的边缘情况,它们非常不同。 -
@MooingDuck,对于 r==3,每张桌子要么有 0 个空椅子,要么有 1 个空椅子。但我不确定将小组分成三三两两的大小是否是最好的主意。
标签: algorithm dynamic-programming mathematical-optimization greedy