蒟蒻考场上想出来的,到现在为止所有民间数据均可AC,没有看到别人写类似的,所以就发一下,dalao们一起尝试卡掉他(
基本思想:预处理两个序列max1[i]和max2[i]分别表示国内航班和国际航班在允许i个廊桥的情况下最多能放多少个航班,最后输出max1[i]+max2[n-i]的最大值。
序列预处理:只考虑预处理max1,max2可以用相同的方法去求。维护一个当前未被加入的航班集合(我用的是set),计算在第i轮时能被加入的航班,并将其从集合中删除。枚举到可加入的航班后可以用这个航班的离开时间二分查找下一个可行的航班的到达时间,以保证每个航班在全部n轮中只会被枚举一次。
复杂度O(n log n)还是O(n log^2n)我暂时还没有想清楚,反正都能过1e5。