zoukankan      html  css  js  c++  java
  • 火车运煤问题

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

    最优解:

    1,火车从煤矿出发3次,也即回来2次。(这样可以把3000吨都运出,回煤矿次数越多越费煤,所以最少需要回2次)

    2,火车每次回煤矿要是空车。(如果不是空车,回煤矿两次显然不可能把所有煤运出去)

    3,由于回煤矿两次,所以在中途有两个停车点,剩余的煤卸在停车点。

    因此,最近的卸煤点设为x(与煤矿的距离),远处的卸煤点设为y(与x的距离),则1000 – 2x = 3x。2x是第一次卸煤时从煤矿往返消耗煤量,3x是第二次卸煤(在远处的卸煤点y)时从煤矿往返到x消耗煤量+最后一次运煤时途经x消耗煤量。这样解得x = 200

    第一个1000吨煤供中途跑路用。

    由于每次从煤矿出路过x时,煤量补满;每次回煤矿路过x时煤刚好用完,然后补够x。这样相当于第二个卸煤点的煤是从x点满载运出来的1000吨剩余的煤量,1000 – 2y = y。y是从第一个卸煤点到第二个卸煤点间的距离。这样解得y = 333.33

    于是x卸煤点距煤矿200公里,y卸煤点距煤矿333.33 + 200 = 533.33公里。

    第二个1000吨煤也供中途跑路用。

    这样最后一次运煤,途经x时,把x的煤全部用完,然后火车满载;途经y时,把y的煤全部用完,然后火车满载。于是,在y点时,火车满载1000吨煤,距离终点1000 - 533.33公里,路上消耗1000 - 533.33吨煤,剩余1000 – (1000 – 533.33) = 533.33吨煤。

  • 相关阅读:
    PAT (Basic Level) Practise 1013 数素数
    PAT (Basic Level) Practise 1014 福尔摩斯的约会
    codeforces 814B.An express train to reveries 解题报告
    KMP算法
    rsync工具
    codeforces 777C.Alyona and Spreadsheet 解题报告
    codeforces 798C.Mike and gcd problem 解题报告
    nginx + tomcat多实例
    MongoDB副本集
    指针的艺术(转载)
  • 原文地址:https://www.cnblogs.com/codingmylife/p/2712249.html
Copyright © 2011-2022 走看看