对于一辆车,在时刻 τ 的位置其实就是下面三个数的中间值:
xi(τ)=mid(ai−τ, bi, ai+τ)
其中 mid 表示三个数中大小居中的那个数。
这是因为:
矿井调度室要在一条直线巷道上同时派出若干无人矿车。每辆车已经停在某个编号点,任务单指定了它该去的卸载点。被派出的车从同一时刻起步,沿巷道以单位速度开往卸载点,到了就停着不再动。巷道一次只容一车通过同一位置:任意时刻两车不能重叠,出发瞬间也算。请帮助调度员一次派出尽量多的车,并保证全程不撞车。
有 m 辆矿车。第 i 辆的当前停靠点是 ai,指定卸载点是 bi。从时刻 τ=‘0‘ 起,每辆被派出的车同时行动:若尚未到达 bi,就以速度 1 沿直线朝 bi 行驶(每经过 1 个单位时间,走过路程 1);到达 bi 后停在该点不再移动。
记第 i 辆车的到站用时为 ∣bi−ai∣。在时刻 τ≥‘0‘,它的位置 xi(τ) 为:
位置与时间都按实数理解(例如 τ=‘0.5‘ 也可以讨论)。若存在某个时刻 τ≥‘0‘ 使得两辆被派出的车位置相同,则称它们在该时刻相遇;‘0‘ 时刻也计入。
请从 m 辆车中选出尽可能多的车,使得任意时刻都不存在两车相遇,并输出最多能选出多少辆。
约束:
1 ≤ m ≤ 2000001 ≤ ai,bi ≤ 1000000000第一行一个整数 m(1 ≤ m ≤ 200000),表示矿车数量。
第二行 m 个整数 a1,a2,…,am(1 ≤ ai ≤ 1000000000),表示各车当前停靠点。
第三行 m 个整数 b1,b2,…,bm(1 ≤ bi ≤ 1000000000),表示各车指定卸载点。
输出一个整数,表示最多能同时派出且全程不相遇的矿车数量。
输入
3
4 6 9
7 3 9
输出
2
说明
三辆车分别是 4→7、6→3、9→9。前两辆相向而行,会在 τ=‘1‘ 时同时到达位置 5,不能一起派出。第三辆始终停在 9,与前两辆都不相遇,因此最多派出 2 辆。
输入
3
8 8 2
3 12 5
输出
2
说明
8,已经算相遇,最多保留其中一辆5 并停下,前者同一时刻也开到 5,仍会相遇2输入
3
1 3 5
10 8 6
输出
1
说明
三辆都向右开,且卸载点从左到右依次变近。左边的车会在右边的车已经停住之后,开到同一个卸载点上,因此任意两辆都会相遇,最多只能派出 1 辆。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册