蚂蚁爬杆(去表象分析异同)

博客探讨了蚂蚁在水平竿上爬行的问题,当蚂蚁相遇或到达竿子边缘时会改变方向。文章提供了输入输出说明及样例,并解析了最短和最长时间的计算方法,即蚂蚁相遇后反向爬行相当于擦肩而过,关键在于找到中间点与两端点的距离关系。
摘要由CSDN通过智能技术生成

 

//换个角度看问题,找到问题的实质,相同的性质东西可以做相同的转化处理,比如这里的蚂蚁都是一样的,所以可以看做擦肩而过。

题目描述

一群蚂蚁在长为lcm的水平竿上爬行,每一只的速度都恒为1cm/s。当一只正在爬行的蚂蚁到达竿子的边缘时,它会立即从杆上掉落。当两只蚂蚁相遇时,它们会各自反向爬回去。我们知道每只蚂蚁原来距离杆子左端的距离,但不幸的是,我们不知道它当前的方向。你的任务是计算所有蚂蚁都从竿子上掉落所需的最短时间和最长时间。

输入

测试数据有多组,每组包括两行:
第一行:竿子的长度(以cm为单位,1 <= n <= 1e6),和在竿子上的蚂蚁的数量n(1 <= n <= 1e6)
第二行:每只蚂蚁距离竿子左端的距离,以空格分开,每个数均不超过l且大于0

输出

对于每组测试输出一行,包括两个整数:全部蚂蚁掉落所需的最短时间和最长时间,以空格分开

样例输入

10 3

2 6 7

214 7

11 12 7 13 176 23 191

样例输出

4 8

38 207

题解:碰撞后反向爬其实就是相当于擦肩而过,所以最短时间就是靠近中间的那个点到两端点的较小值,最长时间就是最靠近两端点的点到另一边端点的距离

 

 

 

#include <stdio.h>
in
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值