2020多校1 - Leading Robots(单调栈)

2020多校1 - Leading Robots(单调栈)

题面Leading Robots

题意:有 T ​ T​ T 个赛事,每个赛事中有 N ​ N​ N 个机器人准备在从左往右水平赛道上赛跑,已知每个机器人的初始位置 p i ​ p_i​ pi 以及加速度 a i ​ a_i​ ai,初始速度为 0 ​ 0​ 0,现假设赛道无限长的情况下有多少个机器人会在赛跑过程中处于过“领先”情况,某个机器人“领先”定义为该机器人在当前时刻 t ​ t​ t 跑在所有人前面且是唯一一个。

范围 1 ≤ T ≤ 50 ; 0 < n ≤ 5 e 4 ; 0 < p i , a i < 2 31 1 \le T \le 50;0 < n \le 5e4;0 < p_i, a_i < 2^{31} 1T50;0<n5e4;0<pi,ai<231

分析: 我是这样思考的,由于初始位置以及加速度都是固定的,那么如果当前的领跑者 A ​ A​ A 被某个机器人 B ​ B​ B 超过了,那么之后 A ​ A​ A 永远都不可能再追上 B ​ B​ B,因此我们只需要不断确定当前的领跑者会不会接下来被其他机器人追上。

暴力的方法是先根据机器人的初始位置升序以及加速度升序进行排序,那么排序后最后一个机器人就是当前的第一个领跑者,然后我们可以每轮对其后方的机器人求最小的相遇时间 t = m i n ( 2 ∗ ( p j − p i ) a i − a j ) t = min(\frac{2*(p_j-p_i)}{a_i-a_j}) t=min(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值