我来说说我的大致做法 不是讨论区题解
离散时间,将同类型航班按 L 排序,对于每个航班,求出其所需要的最少的廊桥数量 x ,发现 x 不会受分配的廊桥数量变化而变化,然后将其加入到编号 x 的廊桥中
求 x 的方法:对于已经使用过的廊桥,维护该廊桥上最后一班航班离开时间。每次加入一个新航班时,查询这个航班的降落时,已使用过的空着的廊桥中编号最小的廊桥。
用数组动态存储每个廊桥最后的航班离开的时间 last 。并用线段树维护 last在一定区间中廊桥编号最小值。
求新的 x 时查询前缀。加入航班后减去旧的 last 加入新的 last (所以用不了树状数组)。若查询时所有廊桥都不空闲则加入新的廊桥。
最后枚举 0 到 n 即可求出答案
提几个易错点
请广大的聪明智慧的洛谷OIer们帮蒟蒻证明正确性/证伪以及hack
最后,如果有意见或别的做法,欢迎讨论~