作者 | kyle       责编 | 欧阳姝黎

故事起源

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

  • 每次最多携带 60 升

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

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

  • 他必须安全返回出发地

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

分析

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

则收益为:.

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

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

总共获利:。

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

深入思考

题意描述是一个数学模型,但其实我们也可以反向建模。以前都是将生活场景抽象成数学模型,这次我们尝试找一个对应的生活场景。

上面我们通过计算得到了结论,但应该怎么去理解呢,它是否具备可解释性?

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

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

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

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

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

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

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

则收益为:利差*数量

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

对生活场景的思考

4.1 场景 1

平时外出经常需要打车。打车人数一般不会变,单价固定,而司机的成本也就考虑油费,这时司机的收益可以假设与里程成正比,那么跑得越远,收益越多。

所以你打车的时候会发现,他们都喜欢跑距离远的单子,近距离一般都不喜欢接。

4.2 场景 2

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

4.3 场景 3

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

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

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

中转

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

中转站建设规则:

  • 240 L,要运输 4 次,如果有 181 L,也要运输 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。

总结

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

2020-2021中国开发者调查报告重磅来袭,直接扫码或微信搜索「CSDN」公众号,后台回复关键词「开发者」,快速获取完整的报告内容!

一道充满歧义的思维题,全网唯一刁钻分析相关推荐

  1. CodeForces - 1102A(思维题)

    https://vjudge.net/problem/2135388/origin Describe You are given an integer sequence 1,2,-,n. You ha ...

  2. [SDOI2009]Bill的挑战——全网唯一 一篇容斥题解

    全网唯一一篇容斥题解 Description Solution 看到这个题,大部分人想的是状压dp 但是我是个蒟蒻没想到,就用容斥切掉了. 并且复杂度比一般状压低, (其实这个容斥的算法,提出来源于y ...

  3. [BZOJ3523][Poi2014]KLO-Bricks——全网唯一 一篇O(n)题解+bzoj最优解

    Description 有n种颜色的砖块,第i种颜色的砖块有a[i]个,你需要把他们放成一排,使得相邻两个砖块的颜色不相同,限定第一个砖块的颜色是start,最后一个砖块的颜色是end,请构造出一种合 ...

  4. little w and Soda(思维题)

    链接:https://ac.nowcoder.com/acm/contest/297/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  5. 全网唯一的Microsoft?NETFramework3?5SP1简体中文完整版离线安装包安装netframewo

    简体中文完整版~~[很多软件都需要它支持]~<<全网络唯一可离线安装的>>!~我自己组合成功的!大家需要吗!加精! 安装netframework4.0装这个版本,目前.net程 ...

  6. ZOJ 3829 贪心 思维题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...

  7. yoyo思维题(困难) 组合数学

    问题 B: yoyo思维题(困难) 时间限制: 1 Sec  内存限制: 256 MB 提交: 11  解决: 3 [提交][状态][讨论版][命题人:qianyouyou][Edit] [TestD ...

  8. 1884: 三个家庭(思维题)

    1884: 三个家庭 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 244 Solved: 81 [Submit][Status][Web Board] ...

  9. php算法在线刷题,c,算法_每日一道算法:leetcode 刷题碰到的问题。,c,算法 - phpStudy...

    每日一道算法:leetcode 刷题碰到的问题. 这是题目: Given an unsorted array nums, reorder it such that nums[0] < nums[ ...

最新文章

  1. Caffe源码中各种依赖库的作用及简单使用
  2. 一个复杂系统的拆分改造实践!
  3. 上银伺服驱动器接线图_伺服驱动器实际接线方法详解
  4. python web-python web入坑指南
  5. C++二维码相关库编译
  6. 开奖及送书|《Vue.js权威指南》
  7. sql 子查询 嵌套查询_SQL子查询– SQL中的嵌套查询
  8. eclipse下彻底删除SVN插件
  9. javweb音乐网站_基于javaweb音乐网站设计与实现
  10. spring configuration注解原理
  11. 华为畅享20为什么没有计算机,华为畅享20 Pro强势来袭:即刻5G,不等待
  12. 开始写usb gadget驱动
  13. Unhandled rejection Error: EACCES: permission denied, open '/Users
  14. Hidden Markov Models Forward算法
  15. Android中插件化实现的原理,宿主app运行插件中的类 (一)
  16. 数据库实验六综合实验-水果商店进阶一
  17. Python人脸微笑识别2-----Ubuntu16.04基于Tensorflow卷积神经网络模型训练的Python3+Dlib+Opencv实现摄像头人脸微笑检测
  18. 下载到的电子书格式是Mobi,这种格式能否在MAC电脑上打开?
  19. xshell6家用版下载和使用
  20. JavaSE-part2

热门文章

  1. leetcode959. Regions Cut By Slashes
  2. 【晨读】热爱 ▪ 英语 @ 热爱 ▪ 晨读
  3. 解析Java内存区域
  4. 【Linux】Ubuntu 代理配置
  5. Preferences偏好设置
  6. AJAX POST跨域 解决方案 - CORS(转载)
  7. IE、firefox下怎样获得自定义属性的值
  8. SPS:设置访问群体
  9. 【ubuntu】查看服务器上的进程占用GPU情况
  10. java application程序_如何Java编写的application程序像exe一样方便shy;的运行