1.故事起源

有一人有240升水,他想运往干旱地区赚钱。有几个限制条件如下:

  • 每次最多携带60升

  • 每前进1公里须耗水1升(均匀耗水)

  • 水的价格与路程成正比,出发地为0元/升,前进10公里处为10元/升

  • 他必须安全返回出发地

那么应该采取怎样的策略,赚取最多的钱?

2.分析

总共240L,每次最多60L,那就分4次运输。假设前进X公里处卖掉:
则收益为:.

这样就变成了一个二次函数求最值问题,画出函数图像如下:

得到结论:分4次往返运输,每次装满60L,前进15公里的地方卖掉,再返回。

总共获利:

那这样问题貌似已经完美解决了,网上其它的分析基本也都是这样,但题目貌似有一些歧义,接着我们继续往下分析。

3.深入思考

题意描述是一个数学模型,但其实我们也可以反向建模。以前都是将生活场景抽象成数学模型,这次我们尝试找一个对应的生活场景。
上面我们通过计算得到了结论,但应该怎么去理解呢,它是否具备可解释性?

这样来理解:水在原产地没有价格差异,所以不论有多少,收益都为0。运输到了外地产生了价格差,但运输成本也会增加。

那收益为什么会存在一个确定的最大值呢?
比如在成都产的小麦,为啥不运输到纽约去卖呢。先不考虑其它的客观条件,只通过计算经济收益来考虑。

先来研究一下价格、运输成本与距离的关系。

通过上面的函数图像可以发现:

  • 收益=价格*剩余数量,即收益=,这不是线性关系,因为货物数量在越来越少

  • 只看成本,则成本=损耗数量*价格,即成本=,也不是线性增长,因为成本是损耗的货物本身,而货物本身的价格在增长,所以成本以非线性上升

如果理想场景,价格与距离成正比,运输成本也与距离成正比,且货物数量不变。

则收益为:利差*数量

那么收益与距离成正比,距离越远,收益就越高。如果从成都运输小麦到纽约符合这个模型,那么肯定应该把小麦卖得越远越好,但实际生活中,有很多其它的因素,不满足线性关系。
比如到纽约的小麦价格涨10倍,但成本却要涨100倍,这样收益就会越来越低,甚至亏损。

4.对生活场景的思考

4.1 场景1

平时外出经常需要打车。打车人数一般不会变,单价固定,而司机的成本也就考虑油费,这时司机的收益可以假设与里程成正比,那么跑得越远,收益越多。
所以你打车的时候会发现,他们都喜欢跑距离远的单子,近距离一般都不喜欢接。

4.2 场景2

收益=利差*数量,通过这个公式,可以看出要提高收益,就增大利差或者增大销售数量。所以为啥iphone要卖向全球,因为能提高销售数量,至于利差也不一定要比原产地高,但整体收益肯定会增加。从市场经济的角度来说,理论上有更高利润,那么这个经济行为就可以发生。

4.3 场景3

回到之前的问题,随着距离的增加,货物越来越少,最后可能是一个大货车运一瓶矿泉水,也可以理解为运输效率越来越低,成本自然就越来越高。

比如网购的快递运输。快递在长途运输是用大货车,但最后派送却是用的电瓶车,你应该没见过一个大货车装几个包裹开你家门口吧,快递公司都是有很多的中转站。

那么之前的问题,是否也可以用中转的方式呢,这就是有歧义的地方。题目没有说必须一次运输到目标点再全部卖掉,接着我们继续分析。

5.中转

为了解决运输效率低,我们肯定是希望货车尽量的满载,因为限制最多60L,那就尽量装满60L,所以可以在中途建立中转站。
中转站建设规则:

  • 240L,要运输4次,如果有181L,也要运输4次,所以保证每个中转站都还剩60的倍数

  • 在到每一个中转站途中,选择最大的收益卖掉,最后比较取全局最优

  • 到达一个中转站,如果不卖,就要将返程的水放这里,等返回的时候再装上

5.1 第一站,7.5公里

运输4次,最佳卖点是7.5公里的位置,最多可得1350元。如果不卖就往返7次,留7.5L在此处,继续往前转运,返程再装回7.5L。

5.2 第二站,10公里

在站点卖掉,最多可得2100元。

5.3 第三站,15公里

在距离第二站6.25公里处卖掉,最多可得2256.25元。

如果在第3站站点卖掉得60*32.5=1950,往后只会更低。所以按上面方式转运,最多可得2256.25元。

ok,我们成功的把一个简单的问题复杂化了,perfect。

6.总结

简单的问题也要多深入思考,全方位360度无死角,就有可能发现很多不一样的结论。生活中的各种场景都可以和严谨的数学联系起来,关键是能否找出他们的本质规律。

如果喜欢小K的文章,请点个关注,分享给更多的人,小K将持续更新,谢谢啦!

关注下方公众号:小K算法,分享硬核知识

往期精彩回顾

经典面试题:有序矩阵的快速查找

勾股定理竟然有500种证明方法,你会几种?

论数学在撩妹中的重要性(一)

240升水,运往干旱地区,最多携带60升,前进1公里耗1升,最多可赚多少钱相关推荐

  1. 3升杯子5升杯子倒出4升水

    下午无意中看到了一个题:两个杯子,一个5升,一个3升,请在30s 内说出该如何倒出4升水. 网上的答案是这样的:先把3升的水杯倒满,然后把水倒入5升的水杯:然后再把3升的水杯倒满,接着将水倒到5升水杯 ...

  2. 如何用3升和5升桶量取4升水?

    如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水? 解法1: 5-1=4 第一步,将5升的桶装满,然后倒到3升的桶,此时剩下2升水: 第 ...

  3. 怎样用一个3升的杯子和一个5升的杯子装出4升水来(杯子没有刻度)?

    为什么80%的码农都做不了架构师?>>>    方法一: 五升的装满水,再从里面倒出三升到三升的杯子里,得到两升,两升水倒入三升的杯子;五升的杯子装满,往三升的杯子里倒掉一升(三升的 ...

  4. 有趣的三个水桶等分8升水问题

    有三个容积分别为3升.5升.8升的水桶,其中容积为8升的水桶中装满了水,容积为3升和容积为5升的水桶都是空的.三个水桶都没有刻度,现在需要将大水桶中的8升水等分成两份,每份都是4升水,附加条件是只能这 ...

  5. 苹果要给高通多少钱?瑞银分析师预计最多支付60亿美元

    [TechWeb]4月19日消息,据国外媒体报道,苹果与高通之间因专利授权费而起的法律大战在持续了两年多之后出人意料的宣布和解,双方同意撤销全球范围内正在进行的全部诉讼,还达成了专利授权.芯片供应方面 ...

  6. 和尚挑水 java_java编程:山上有一口缸可以装50升水,现在有15升。老和尚叫小和尚下山挑水,每次挑5升,要挑几次...

    java编程:山上有一口缸可以装50升水,现在有15升.老和尚叫小和尚下山挑水,每次挑5升,要挑几次 关注:123  答案:6  mip版 解决时间 2021-01-17 07:16 提问者妳有我霸氣 ...

  7. 宜信笔试题 把m升水倒入n个杯子

    把m升水倒入n个杯子,如7升水倒入3个杯子,511,421,331分配都可以.但是421和214,151和511之类的视为同一种分配方法.杯子可以放空,如700也算一种方法 #include<s ...

  8. 一块手机电池可污染6万升水 环保之路任重道远

    2012年05月29日 14:00 来源:新闻晨报 对于我们赖以生存的地球来说,环保是一个永恒不变的话题.随着生态环境的日益恶劣,作为普通大众的我们,又学会了"PM 2.5"这样一 ...

  9. 5.准确量出2升水,如果你有4升和5升的碗

    问: 准确量出2升水,如果你有: 4升和5升的碗 第一,装满5升碗,倒进4升碗里倒满,然后把4升碗里的水倒掉.再把剩下的1升水倒进4升碗里.重新装满5升碗,从5升碗里倒水进4升碗装满(本来就有1升水) ...

  10. 量筒量水问题1--一个盛满水的池子,有一个6升的量筒,一个5升的量筒,怎样量出3升水?

    方法一: 1.5升装满水,倒入6升的里面(6升量筒中有5升水) 2.5升再装水,再倒入6升的里面(5升量筒中有4升水) 3.倒掉6升的水,把5升的剩下的水倒进6升的里面(6升量筒中有4升水) 4.5升 ...

最新文章

  1. 当你用Python爬取网站遇到反爬,你应该这样做,轻松解决反爬问题
  2. C#中base关键字的几种用法
  3. 潘云鹤院士:AI2.0和工业经济发展智能化
  4. Chapter 1(数据结构绪论)
  5. 使用线性回归的预测建模
  6. linux 软件 名称 更新,linux软件版本管理命令update-alternatives使用详解
  7. 今日恐慌与贪婪指数为83 贪婪程度大幅上升
  8. SQL Server补丁版本的检查
  9. 电源大师课笔记 2.5
  10. 最新二次开发知宇自动发卡系统源码/全网对接/功能齐全
  11. DOS攻击工具——pentmenu
  12. 三基色、对比色、互补色之间的关系,图片调色基础
  13. 金蝶K3工资模块个税计算公式
  14. 科研linux发型版本,[合集]哪些Linux系统科研能用呢 - 优秀的Free OS(Linux)版 - 北大未名BBS...
  15. hive为什么insert into后数据被覆盖了
  16. POJ - Frogs' Neighborhood(Havel-Hakimi)
  17. selenium优缺点_Selenium测试自动化工具的优缺点
  18. oracle between反义,GRE 类比反义单项笔记整理
  19. php 银行卡4位分隔,javascript将数字四位分隔模拟银行卡号码代码实例
  20. Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?

热门文章

  1. csr驱动程序linux版,CSR8510蓝牙驱动下载
  2. cmd的常用命令分类详解
  3. wkt文件java解析_WKT文件解析 以及各个投影坐标的wkt参数查询 | 学步园
  4. DART语言学习整理
  5. Nessus 下载失败,找不到nessuscli
  6. scratch游戏中背景移动的奥秘
  7. 2021年网络工程师中级考点笔记
  8. Mbed TLS 编码规范
  9. 未来教育二级c语言的答案库在哪里,未来教育计算机二级c语言题库
  10. 各种坐标系下的散度、梯度、旋度公式