关于火车运煤的一些想法

2024-05-06 12:08
文章标签 火车 想法 运煤

本文主要是介绍关于火车运煤的一些想法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

火车运煤也是个经典的问题了。它的定义如下:

你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?


很多人都知道结果是533.3333。但是这个结果是怎么算出来的,当有4000,或者5000吨煤要运的时候,结果又是多少?这是我这篇博客想讲的东西。

我的解决思路:

想要运最多的煤到集市,很明显这是个贪心算法的问题。它的问题部分是运煤到集市,贪心的部分是运最多的煤。

由于贪心算法的原理,每一个子问题都要是最优的。那么,由于这个火车最多只能装1000吨煤,且每一公里需要耗一吨煤,那么当火车消耗完1000吨煤之后,它对整个问题的贡献是什么?由于消耗了1000吨煤,还剩下了2000吨煤。那么消耗了1000吨煤对问题最大的贡献是把这剩下的2000吨煤整体向前移动了多少公里?这就是一个子问题。

接下来的就很简单了,假设消耗了1000吨,剩下的2000吨整体向前移动了x公里。整个问题就变成了将2000吨煤再运送1000-x公里的距离。那么再消耗1000吨,剩下的1000吨又整体向前移动了y公里。这个时候,只剩下1000吨煤了,火车离集市还有1000-x-y公里。还在想什么,火车直接拉着最后的1000吨煤开向集市吧。

这样,问题就转化成了求x,y的值。这相对就很简单了。

先求x,想象这样一个画面,火车从起点拉了1000吨煤走到了A点,消耗了x吨煤,然后将1000-2x吨煤放下,带着x吨煤往回走,回到起点时,煤正好烧完了,火车变成空的了。再为火车装上1000吨煤,重复上述过程。最大的问题就是这个过程重复了几次?仔细看上述过程就知道,每次火车都要在起点装1000吨煤,总共就3000吨煤,所以火车最多有三次在起点。所以火车有3次从起点到A点,2次从A点到起点。所以x=1000/(3+2)。求出x=200

同理,y=1000/(2+1)。

所以火车最后到达终点时候剩余的煤就等于1000-(1000-x-y)=x+y=533.3333


当要运4000,5000吨煤的时候,很简单,照着上面的思路再算一遍吧。

这篇关于关于火车运煤的一些想法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/964306

相关文章

基于Spring Boot的火车订票管理系统

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:JAVA语言 + Spring Boot框架 工具:IDEA/Eclipse、Navicat、Tomcat 系统展示 首页 管理员界面 用户购票 订单管理 摘要 随着网络技术的不断发展,火车订票管理系统逐渐由传统的线下操作转变为线上服

关于并发的一些想法

1.多个用户同时访问一个网站系统是并发,也会造成并发问题(但这个问题不是线程间的并发问题,不是对临界变量的并发问题。这个很容易混淆的)。这里造成的并发的问题是由于用户过多发出的http的请求过多,程序排队处理这些请求,同时,对于同一个数据库和同一tomcat来承受这些请求(可能千万个请求),同时服务器的cpu和内存等都会有问题,必然导致用户响应界面效果不好,产生卡顿现象。因此,才有了分布式、集群、

sobel_dir 方向图和sobel的一些想法

怎么使用呢! 1,通过方向图可以提取 直线 或水平线region区域,提出来的dirregion区域 2,通过sobel的幅度度,分割出变化剧烈的区域 fuduregion 3,两个region相交,可以准确定位幅度范围内+方向的边界 4,sobel算子是可以只做x,y方向的单项幅度图的,sobel_amp在一定场合有特别的用处,值得关注 5,关于大掩码超过3的size,要注意的

有关微信公众平台和html5的想法

在师哥的引导下,我接触了微信公众平台,通过这段时间的感性认识,产生了一个想法就是在微信公众平台上退出一款自己的宠物,可惜技术达不到,现在只能想想而已。不过,在初步了解html5之后,我发现,这并不是不可能实现的事情。 我说下这么想的原因吧,很简单,在微信公众平台上阅读消息,实际上就是通过微信内置的浏览器来实现的。并且自己做的div网页效果,在这个内置的浏览器上能很好的表现出来。另一个原因就是ht

1hdu022数据结构堆栈-火车进站

/*判断一串序列能否按照堆栈的方式,进出栈之后得到另外一组序列*/ /*要把题目当做已知进出序列进行对比*/ #include<iostream>#include<cstdio>#include<cstring>using namespace std;struct node{char st[4];}str[10000];int main(){int n,i,j,t,k,ok

有于AI想法

AI 模型的全面评估和比较   在对不同类型的 AI 模型进行全面评估和比较时,精度、速度和鲁棒性是关键指标。   精度是衡量 AI 模型准确性的重要指标。对于全能型 AI 模型,其在处理多种任务时的综合精度至关重要。然而,与专业型 AI 模型相比,全能型在特定领域可能难以达到同等的高精度。例如,在医学影像诊断领域,专业型 AI 模型经过大量特定数据的训练,能够更准确地识别病变。而全能型 AI

C++学习想法

今天是周一,今天做早操的时候舍友说准备买一本C++基础的书。我觉得这样的想法很好,突然想到自己最近几天因为自己私人原因事情很忙,蛋这不能成为我不学C++的理由。所以我在这规划了我这一周的学习进程。首先我要完善我的学生管理系统。其次就是我要好好准备周三的C++课。我现在好准备在这个月结束前开始学习JAVA,不知道我能不能实现。现在我的C++学的都还不是很精通,就开始学习java不知道是不是好高骛远呢

关于《丑陋的中国人》一些想法

看完《丑陋的中国人》,发现柏杨老师纯粹就是个喷子(不能叫愤青了)。如果他活到了现在的网络社会,肯定是个键盘侠,也是个制造热度的高手。   其实看过书之后,不难发现柏杨将中国人描述成这样子:   丑陋的中国人,偏执,迂腐,喜欢站在道德制高点,素质低。心胸狭隘,城府极深,明里一套暗地一套。阴暗,脏乱吵,嗓门大,没有安全感。喜欢窝里斗,不团结,打仗打不过日本人,做生意做不过日本人。死不认错,宁愿

Algorithm学习笔记 --- 铁轨(火车重排问题)

某城市有一个火车站,铁轨铺设如图所示。有n节车厢从A方向驶入车站,按进站顺序编号1~n。现让这些火车按照某种特定的顺序进入B方向的铁轨并驶出车站。为了重组车厢,可以借助中转站C。C是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出C。对于每个车厢,一旦从A移入C,就不能再回到A了;一旦从C移入B,就不能回到C了。换句话说,在任意时刻,只有两种选择:A→C和C→B。

关于车的一点小想法

今天看到一个有趣的新闻, 说是重庆有两个哥们开车发生摩擦, 当街划石头剪刀布“定责”。 城市道路拥挤,乡村道路复杂,擦擦碰碰难免,当事故发生后, 有这两个哥们这样的心胸却是很少。 这种摩擦是比较烦人的, 本来对车的性能影响也不大,但是总开着一辆事故车上路,估计那天就被交警小哥哥拦下来喝茶了。所以要去补漆啥的,至少就是一周时间,想想就烦人。 我在想能不能减小这种摩擦事故呢? 其实应该有人想到了