蚂蚁爬行问题及其改编
问题描述:
n只蚂蚁以每秒1cm的速度在长为Lcm的竹竿上爬行。当蚂蚁看到竿子的端点时就会落下来。由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反方向爬行。对于每只蚂蚁,我们只知道它离竿子最左端的距离为xi,但不知道它当前的朝向。请计算所有蚂蚁落下竿子的最短时间和最长时间。
限制条件:
1<=L<=106
1<=n<=106
0<=xi<=L
样例:
输入
L=10
n=3
x={2,6,7}
输出
min=4{左、右、右}
max=8{右、右、右}
【解法一】
解题分析:
对于最短时间,我们可以考虑当所有蚂蚁都向最近的端点移动时,这时不会发生两只蚂蚁相碰的情况,也就是时间最短的情况。
对于最长时间,你也许会想蚂蚁有向左向右两种情况,相碰之后又向相反的方向移动,n只蚂蚁就有2n种可能,要考虑的情况就会特别多,而随n的增大急剧增加。但你仔细想一下两只蚂蚁相遇时的情况(如下图)会发现,由于相遇时相互反向移动且速度相同,我们可以认为是依原方向移动。
如果你是高中生,一定会立马想到物理学中的动能定理……
程序实现:
C++
#include<iostream> #include<algorithm> const int L = 10; const int n = 3; const int x[n] = {2,6,7}; int main() { int min, max; min = max = 0; int minX, maxX; for(int i=0; i<n; i++) { minX = x[i]<L-x[i]?x[i]:L-x[i]; min = minX>=min?minX:min; maxX = x[i]>(L-x[i])?x[i]:L-x[i]; max= maxX>max ? maxX : max; } cout<<min<<" "<<max<<endl; return 0; } |
改编题目:
蚂蚁爬行问题及其改编相关推荐
- 蚂蚁爬绳java_腾讯面试题——蚂蚁爬行(Java版)
/** * 蚂蚁类,用于记录蚂蚁的状态及控制蚂蚁行为 */ public class Ant { /** * 蚂蚁爬行方向枚举值 */ public interface Direction { /** ...
- 蚂蚁爬橡皮筋问题 之一
一条可以均匀拉伸无限拉伸的橡皮筋,初始长度为1米,一个累不死的蚂蚁,从橡皮筋的一端爬到另一端,蚂蚁爬行速度为1厘米每秒,橡皮筋拉伸的速度为10厘米每秒!问:蚂蚁可以爬到橡皮的另一端吗?如果可以要用多久 ...
- [蓝桥杯][历届试题]蚂蚁感冒
http://www.dotcpp.com/oj/problem1454.html 题目描述 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是1 ...
- zjoi 2008 杀蚂蚁
题目描述 最近,佳佳迷上了一款好玩的小游戏:antbuster. 游戏规则非常简单:在一张地图上,左上角是蚂蚁窝,右下角是蛋糕,蚂蚁会源源不断地从窝里爬出来,试图把蛋糕搬回蚂蚁窝.而你的任务,就是用原 ...
- matlab蚁群算法 降维,基于蚁群算法的路由问题研究
在组播路由中,用matlab画图,组播总费用提前收敛,到达各个节点的费用后收敛,甚至有些节点费用一直没有收敛.不应该是每一个节点收敛后,组播树总费用才收敛吗? 是不是我的代码有问题 以下是我的代码: ...
- catia圆柱转化为圆台_中考难点,最值问题之构造与转化
数学思想方法是数学教学的灵魂,是数学知识的精髓,是把数学知识转化为能力的桥梁,而转化思想是数学思想的核心.它是从未知领域发展,通过数学元素之间的因果联系向已知领域转化,从中找出它们之间的本质联系,以达 ...
- 蚁群算法(ACO)最短路径规划(MATLAB)
蚁群算法最早是由Marco Dorigo等人在1991年提出,他们在研究新型算法的过程中,发现蚁群在寻找食物时,通过分泌一种称为信息素的生物激素交流觅食信息从而能快速的找到目标,据此提出了基于信息正反 ...
- 【误判心理学】查理芒格的25种误判心理倾向
我早就对标准的思维错误非常感兴趣. 然而,在我受教育的年代,非临床心理学在理解错误判断方面 的贡献完全遭到了主流社会精英的漠视.当时对心理学进行研究的人非常少,只 有一群自娱自乐的教授.这种固步自封的 ...
- 如何求地球上两点之间的最短距离_初中数学求线段之和最小的问题,知识点题型汇总...
我们经常在考试当中看到求线段之和最小的问题,首先来看下这几个数学模型: 模型1:两点之间线段最短 要在l找点P,使得PA+PB最短,这模型最简单,两点之间线段最短. 模型2:将军饮马问题 在l上找一点 ...
最新文章
- 国内丨中国人工智能标准化体系建设提速
- [Android]实现类似微信的延迟加载的Fragment——LazyFragment
- setDAta 字符串拼接
- 六 装饰模式(Decorator)——设计模式学习笔记
- Qt编写安防视频监控系统4-删除视频
- VTK:图表之VertexSize
- JavaScript中对象成员的可见性
- 【LiveVideoStack线上分享】WebAssembly在Web多媒体领域的相关实践
- c++ error函数_R语言中广义线性模型(GLM)中的分布和连接函数分析
- Django(part11)--利用UUID传递参数
- HFSS中的求解类型(Solution Type)
- 双马尾机器人(???)
- uniapp编译成小程序代码过大的处理方法
- 2022年中级通信工程师的考试资料,考试延期快快点刷题
- 如何获取win10锁屏界面的壁纸
- mysql火焰图_Linux 性能分析利器 -火焰图 flame graph
- IDEA报错private field “xxx“ is never assigned解决
- 学习使用php实现无限极评论和无限极转二级评论解决方案
- 6月22日!苹果WWDC大会,全球免费参加-首次在线举行!
- 面向对象程序设计实训——万年历
热门文章
- 小程序云开发疯狂踩坑之没值怎么办?
- zigbee协议栈初使用(三)无线数据传输
- 读书笔记——《时间简史》
- USB-Blaster 的驱动安装及问题——完全解决
- 中秋节的HTML5制作,中秋节视频制作教程大放送-会声会影中文官网
- @ResponseBody返回JSON数据,360安全浏览器弹出下载页面
- 彻底禁用Chrome的“请停用以开发者模式运行的扩展程序”弹窗
- 让游戏聊天消息、信令控制更实时、可靠,声网实时消息 RTM SDK Unity版上线
- 使用 KMS 驱动进行数据加密
- 全球首款与谷歌日历同步的GTD时间管理软件 成功GTD时间管理