假设你有 k 块石头和 m 块石头类型你有 f1 块石头来自第一种类型,f2 来自第二种类型,依此类推。
(即总和(f_i)= k)。
此外,我们得到一个正整数 r。
最少需要多少个桶,这样我们才能将石头类型分配到每个桶的大小不超过 r 的桶中?(我们也知道对于每个 i,f_i <= r)。
这个问题实际上是某种装箱问题,所以我不确定它是否有确切的答案,但我们可以给它一个上限吗?
一个微不足道的上限的例子是 m,因为这将允许我们将每种石头类型打包在他自己的桶中。
一个不起作用的界限的例子是 k/r。原因是如果k=9,r=3,我们有5种石头,f1=2,f2=2,f3=2,f4=2,f5=1,
那么无论我们如何划分石头类型,都必须有一个大小> = 4的桶。
同一类型的所有石头都必须放在同一个桶中。
有什么建议么 :) ?
编辑:m 和 f_i 是未知的,我正在寻找一个界限,它使我能够为所有 (m,f_i's) 组合分配石头。
另一个例子:假设 r = 3。我将证明 k/2 个桶就足够了:
让我们用 x 表示有 3 块石头的类型数量。y 将表示恰好有 2 颗宝石的类型数量,z 将表示单颗宝石类型的数量。
根据定义:3x + 2y + z = k。我们可以为 3 块石头类型分配 x 个桶。
如果 (y > z) {第一种情况}:将其中一个 y 类型与其中一个 z 类型一起放入一个桶中{我们有 z 个这样的桶}。
将其余的 y 类型放在一个桶中。
由于 y > z 我们使用了 x+y 桶,并且由于 3x + 2y + z = k => x+y <= k/2。
if (z >= y) {第二种情况}:很容易看出我们可以把所有的石头都装在 k/3 个桶中(每个桶都可以装满,正好包含 3 块石头)。
此外,对于 r=3,这将其绑定得很紧(如果 x=z=0 和 y=k/2,那么我们正好需要 k/2 个桶)。
现在的问题是:k/2 个桶是否适用于所有 r 值?
我可以证明 2k/(r+1) 个桶的下限(即紧实例),但它与 k/2 相差甚远。任何人都可以收紧界限吗?