POJ 1852 Ants 蚂蚁(思维,125 ms)

一、题目描述
长为 l cm 的水平杆上共有 n 只蚂蚁,爬行方向不明。第 i 只蚂蚁离左端的距离为 p[i] 。
第一行输入单个变量 t ,为测试样例数。
每个样例的第一行有两个整数,空格分隔,l 和 n 分别为水平杆的长度和蚂蚁的数量。
接下来一行 n 个数,每两个数用空格分隔,代表 n 只蚂蚁离杆左端的距离。
每只蚂蚁的长度不计,速度全部为 1 cm / s 。如果两只蚂蚁相遇,会各自立即往反方向爬,相遇过程耗费的时间不计。要求对每个样例输出所有蚂蚁全部掉落需要的时间。

二、算法分析说明
可以把全部蚂蚁看成是一样的。两只蚂蚁相遇后瞬间往反方向继续爬,等效为两只蚂蚁相遇后仍然继续保持原方向前行。
以杆的中点为分界,如果全部蚂蚁都向离自己更近的一个端点爬,最后掉下去的蚂蚁离更近的一个端点的距离在数值上等于全部蚂蚁掉下去需要的最短时间。
如果全部蚂蚁都向离自己更远的一个端点爬,最后掉下去的蚂蚁离更远的一个端点的距离在数值上等于全部蚂蚁掉下去需要的最长时间。

样例:
2
10 3
2 6 7
214 7
11 12 7 13 176 23 191
输出:
4 8
38 207

以样例 1 为例,杆长 10 cm ,共 3 只蚂蚁,以杆的左端为原点,位置分别为 2 cm 、6 cm 、7 cm 。
三只蚂蚁的爬行方向分别为左、右、右,那么位置为 6 cm 的蚂蚁最后在右端点掉落,全过程用时 4 s 。
三只蚂蚁的爬行方向分别为右、左、左,那么位置为 2 cm 的蚂蚁最后在右端点掉落,全过程用时 8 s 。

三、AC 代码(125 ms)

#include<cstdio>
#include<algorithm>
using std
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值