运煤问题
来源:互联网 发布:软件维护招标评分标准 编辑:程序博客网 时间:2024/04/29 05:30
你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?
http://coolshell.cn/articles/1202.html
这道题应该是逆推吧 发表一下我的拙见。
终点D,中间点C,中间点B,起点A。
首先为了满足火车运到某个中间点可以卸下一定量的煤并返回,应保证每次运输的距离小于500,这样起点和终点直接至少存在2个中间点。
为了减少煤的损耗,每次运输时应满载,故在C点应有1000吨煤,而为了让C点有1000吨煤,需要火车从B点到C点走3次(2次去,一次回)。
而B点储存的煤应该是1000的2倍,所以从B运到C共损失1000吨煤,BC=1000/3;
为了使B点储存2000吨煤,需要从A点到B点往返5次(3次去,2次回),A点有3000吨煤,从A到B损失1000吨煤,则AB=1000/5;
AB=200;BC=333.33333;那么CD=1000-AB-BC=466.6666;
所以最终剩余1000-CD=533.3333吨煤
如果是4000吨煤,每次最大运输也是1000吨煤,则分4段路程,设3个节点
总的想法是让火车每次往前运煤都尽量处于满载状态
我的解法可以剩533吨。
0-533公里内,每次搬一公里。
第一阶段,0-200公里,每公里去3趟,回2趟,消耗5吨,到第200公里剩2000吨;
第二阶段,200-533公里,每公里去2趟,回1趟,消耗3吨,到第533公里剩1001吨;
最后,装上剩下的1000吨(丢掉1吨),直接开往终点,消耗467吨;最后剩533吨。
第一次载上1000吨煤到200处,卸下600吨,回来,煤耗光
再次载上1000吨,如上步骤
第三次将最后的1000吨煤载上,到达200处,此时消耗200吨煤,目前200处煤有2000吨
载上1000吨煤,开到1000/3+200处,卸下1000-2000/3吨煤,再返回200处,载上剩下的1000吨煤到1000/3+200处,此时总共有1000(1000-2000/3+1000-1000/3)吨煤
剩下路程为800-1000/3,则最终剩下的煤为200+1000/3约等于533.333…
- 运煤问题
- 火车运煤问题
- 火车运煤问题
- 火车运煤问题
- 运煤问题
- 火车运煤问题
- 火车运煤问题
- 火车运煤问题
- 火车运煤问题
- 火车运煤问题
- 火车运煤问题
- 火车运煤问题
- 运煤问题
- 《火车运煤问题》分析
- 火车运煤问题分析
- 火车运煤问题分析
- 一个火柴模式问题和一个火车运煤问题
- 几个程序员面试题:火车运煤问题、赛马问题
- 嵌入式Linux驱动开发的知识图谱
- 第九章 接口(下)
- linux下查看cpu、内存和硬盘大小
- 百度地图能定位但是无法显示出来图像
- java中Queue队列的介绍和使用(1)之LinkedList
- 运煤问题
- 协方差&协方差矩阵【matlab实例】
- HDU - 1495 非常可乐(BFS)
- 集成 SVN 插件到 Eclipse 全过程
- iOS 通过URL获取图片,并保存到本地
- 测试2
- 什么是Boot Loader
- 网络流+打印路径 Codeforces510E Fox And Dinner
- 常用的第三方框架和学习途径