博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
火车运煤问题
阅读量:6041 次
发布时间:2019-06-20

本文共 810 字,大约阅读时间需要 2 分钟。

  hot3.png

题目:

煤矿有 3000 吨煤要拿到市场上卖,有一辆火车可以用来运煤,火车最多能装 1000 吨煤,且火车本身需要烧煤做动力,每走 1 公里消耗 1 吨煤,如何运煤才能使得运到市场的煤最多,最多是多少?

分析:

设出发点为 A ,终点为 B,火车一定不能一下子就从 A 跑到 B,这样就 B 时刚好什么也没剩下。到中点也不行,因为到中点后再回到 A,刚好把自己带的煤全部用完,只烧煤不干活!那到底要走多远返回合适呢?

我们可以倒着推理,最后一次火车到 B 点的最好情况是火车从 A B 之间的某点带 1000 吨煤出发,除去路上消耗的,剩下的都可以运到 B 点。

那 最后这 1000 吨煤应该从哪里出发呢?肯定是从 2000 吨煤过来的,为什么是 2000 吨而不是别的数字呢?别的数字当然也可以,但是可能比较复杂, 2000 吨这个数字比较特殊,刚好是火车运量的 2 倍,刚好是个很完整的数。问题就变成,2000 吨煤中消耗 1000 吨最多能走多远,我们知道,2000 吨用火车需要出发 2 次,加上中间返回的那次,一共 3 次(最后一次出发后不用返回了),也就是消耗的 1000 吨煤火车跑 3 次,能跑多远,1000/3 米。

同理,那 2000 吨应该从起点出发,是从 2000 吨转化而来的,这回运 3000 吨火车需要出发 3 次,加上返回的 2 次,一共 5 次,消耗 1000 吨煤火车跑 5 次,能跑 200 米。

综上,火车最后一次出发是从离起点 200+1000/3 米处出发,到 B 点还有 1000 - (200+1000/3) 米,耗煤也是这么多吨,所以到 B 点还剩 200+1000/3 吨煤。

当然,正向推导也是可以的,这是个分段函数,从起点向终点推也行,这里不再细说,有兴趣的请自行网上搜索。

转载于:https://my.oschina.net/xhan/blog/318708

你可能感兴趣的文章
Android示例程序剖析之记事本(一)
查看>>
为什么英雄难过美人关?
查看>>
poj 3009 Curling 2.0
查看>>
Tomcat7安装配置 for Ubuntu
查看>>
Linux:命令执行控制&&与||
查看>>
麻球繁衍
查看>>
FreeRTOS栈溢出检查
查看>>
linux下,远程连接mysql
查看>>
浅谈js闭包(closure)
查看>>
【regex】POSIX标准正则表达式库
查看>>
C#集成FastReport.Net并将模板保存到数据库
查看>>
python装饰器(decorator)两种模式探讨集合
查看>>
高级 DO 语法
查看>>
Jexus下配置多个站点
查看>>
Xcode编辑器的技巧与诀窍
查看>>
String、StringBuffer与StringBuilder之间区别
查看>>
工作第十三周:身体掏空,精神饱满
查看>>
Linux 内核--任务0的运行(切换到用户模式)move_to_user_mode
查看>>
ios扩展机制objc_setAssociatedObject,objc_getAssociatedObject
查看>>
批量添加-fno-objc-arc
查看>>