注册 登录
编程论坛 数据结构与算法

n个罐子,k个硬币,至少c个,我的思路有点混乱

LATASA 发布于 2014-01-26 18:01, 611 次点击
有n个罐子,有k个硬币,每个罐子可以容纳任意数量的硬币。罐子是不透明的,起初你可以随机把这k个硬币任意放在罐子里。然后罐子被打乱顺序,你从外表无 法区别罐子。最后罐子被编上号1-n。你有p次机会,每次你可以选择某个罐子,如果该罐子里有硬币,则你可以得到1个(你不可以知道该罐子里有多少硬 币),如果该罐子是空的,你得不到任何硬币。你最终要得到至少c枚硬币,我们的问题是给定n,k,c,求出最少的p,存在一种你最初放硬币的方式,无论罐 子如何被打乱顺序,你都能p次机会内获得至少c个硬币。

输入n,k,c (0 < n <=1000000, 0 < c <= k <=1000000)。

输出,最小的p值。

例如n = 3, k = 6, c = 4。 你可以把每个罐子放入两个硬币,这样得到4次机会可以得到4个硬币,输出4。
我想无论如何打乱顺序,对于每一个罐子来说,只用两种情况,有或者没有,可以有动态数组来存储,最少的一种是p=c,每一个罐子里面都有一个,刚好拿到c个就好。可是好像不对,求助
2 回复
#2
郁闷的终结2014-02-01 11:52
CSDN?

#3
郁闷的终结2014-02-01 12:27
下去看了一下我的思路如下:
开始的分配方式: 必然是平均分配的! 如果K除以N得 T 存在余数M
                则判断:        C 除以 T 得到X ,与 M 的大小进行比较
                大于 :        P = x + C;
                小雨 :    P = M + C ;
1