首先将所有无人机按位置升序排序,确保处理顺序正确。然后提取速度序列,目标是找到最长不下降子序列,代表可以保留的最大无人机数而不发生碰撞。使用动态规划和二分查找的方法高效计算最长不下降子序列。最后,最少需要移除的无人机数量即为总无人机数减去最长不下降子序列大小,从而避免所有可能的碰撞。
import java.util.*;
在一条无限长的直线上,有 n 架无人机以恒定速度飞行。所有无人机都在同一航线上,可能同向也可能反向。第 i 架无人机的初始位置为 pi,速度为 vi(正数表示正方向,负数表示反方向)。如果两架无人机在任意时刻到达同一位置,就会发生碰撞。为了避免任何碰撞,你可以任意移除一些无人机。请问至少需要移除多少架无人机,才能使剩下的无人机永远不会碰撞?
无人机的数量 n 满足 1≤n≤105。初始位置 pi 和速度 vi 均为整数,且 ∣pi∣,∣vi∣≤109。数据保证所有 pi 互不相同。
第一行包含一个整数 n,表示无人机的数量。 接下来的 n 行,每行包含两个整数 pi 和 vi,分别表示一架无人机的初始位置和速度。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.