火车运煤
2011-05-30 13:55 ubunoon 阅读(1373) 评论(7) 编辑 收藏 举报群里面一位研二的同学,发了这么一个题目:
在数轴上的0点你有一个煤矿,煤矿里有3000吨煤,在1000公里处有一个市场,你有一辆小火车,小火车的最大载货量是1000吨,小火车本身每走1公里就需要烧1吨煤,并且小火车可以在任意地点卸货或者装货,问你最多可以运多少吨煤到市场。。。。
这个题目不是很难,高三的时候就差不多可以解这个题目了,下面开始分析解题:
首先,将1000吨煤装到小火车上,运行到x1处,将1000-2x1吨卸载下来,然后小火车载着剩下的x1吨煤回到出发点,然后拉上剩下的1000吨煤,继续跑到x1处,又是放下了1000-2x1吨煤,再回来,拉剩下的1000吨煤,注意,这次不需要再回到原点,因此只需要耗费一个x1即可,因此3000吨煤拉到x1点的时候,剩下3000-5(x1-0)吨煤,将剩下的煤拉到x2点,同上面的分析,需要耗费的煤为5*(x2-x1),这儿有一个极限点,那就是到了某个点k的时候,煤就剩下1000吨了,这个时候只能一路拉到市场上去了。
于是有:
3000 - 5 * (x1-0) - 5 * (x2 - x1) - ... - 5(xk - xk-1) = 1000
可以求得xk = 400
总共长度为1000公里,于是求得最多可以拉的煤为 1000 - 400 = 600吨。
这个题目很有趣,即k点前面的n个点,任意一个点卸货装货都无关紧要,唯一需要做的是,拉的足量的煤。
(这个题目是否求解正确,自己也不特别肯定,欢迎指正拍砖)。
网友xray指出,400公里路之后,还有600公里的路,因此要消耗的是600吨煤,剩下的是400吨煤。
(都把前面复杂的都分析了,就简单的就分析不了,好囧!)
后来的分析有些错误,经过网友颜沙提醒,首先拉3000吨的时候,必须要装载3次才能够装载过去,于是就存在了来回两次的问题,但是到了2000吨的时候,只需要装载2次就可以过去了,于是只需要1次来回即可,因此求解为:
3000 - 5 * (x1-0) - 5 * (x2 - x1) - ... - 5(xk - xk-1) = 2000
2000 - 3 *(xk+1-xk) - 3*(xk+2-xk) - ... - 3(xm - xm-1) = 1000
可以求解得到xk = 200, xm = 1000/3
于是就可以剩下的煤为:
1000 - ( 1000 - 200 - 1000/3) = 1600/3吨煤。
*
* Copyright (c) 2011 Ubunoon.
* All rights reserved.
*
* email: netubu#gmail.com replace '#' to '@'
* http://www.cnblogs.com/ubunoon
* 欢迎来邮件定制各类验证码识别,条码识别,图像处理等软件
* 推荐不错的珍珠饰品,欢迎订购 * 宜臣珍珠(淡水好珍珠) */