驴子拉萝卜的问题

来源:互联网 发布:ov7620 数据手册 编辑:程序博客网 时间:2024/05/16 01:21

问题:

在全国房价上涨的大背景下,新疆的房价也像火箭一样网上蹿升。这时阿凡提坐不住了。阿凡提虽然有个非常聪明的脑袋,但是没有房子,也是找不到老婆滴。所以阿凡提打算经商,用他的小毛驴把萝卜从小镇A运到沙漠的另一端的小镇B贩卖,中间的路程有1000km。阿凡提只有3000个萝卜,而驴每次最多只能背1000个萝卜,每走1km还会吃掉1个萝卜。问,阿凡提最多能卖多少个萝卜。(阿凡提最后在小镇B找到的老婆,定居在那了,所以不用考虑阿凡提最后能不能回来)

解答:

我们先不管阿凡提神奇的小毛驴只吃一个萝卜就可以走1km。但是我们发现,如果阿凡提让小毛驴背着1000个萝卜一直从A走到B,驴就会把萝卜全吃光,并且,阿凡提还回不去了,这是行不通的。仔细考虑,如果让驴一直走1000km,走的越远,驴的负载就越小。也就是说,一开始的时候,驴背了1000个萝卜,每公里要吃掉1个萝卜;走到998km的时候,驴才背了2个萝卜,每公里依旧吃掉1个萝卜,显然越往后越没有充分发挥神奇小毛驴的作用。

我们再这样想,在沙漠这种很少有人的地方,我们不必担心把萝卜中途放下会有人偷,所以我们可以考虑先将萝卜全部运到中途的某个位置,然后再继续运。这个位置有什么要求吗?有!我们希望小毛驴从这个位置重新开始运的时候,是背着最多的1000个萝卜开始的,这样小毛驴就没充分利用了。那我们应该在中途停几次呢?2次,即中途第一个位置剩2000个萝卜,中途第二个位置剩1000个萝卜,最后将1000个萝卜一次性运到B。

2是怎么算出来的,这里我们有一个公式。假如最多有M个萝卜,小毛驴每次最多运N个,那么中途停顿的次数k为:

k = M/N - 1;

如有2400个萝卜,毛驴每次最多运600个,则k = 3。

如上图。下面就要求出X和Y分别距离A的长度,即AX和AB。

很简单,当在X处只剩下2000个萝卜的时候,有

3000 - 2*AX - 2AX - AX = 2000;
  AX = 200。

同理,可得出XY = 1000/3.

那么YB = 1400/3.

最后剩余的萝卜t  = 1600/3 = 533.333.

取整为533个。