蒟蒻关于CSP-S T1的一些思路
  • 板块学术版
  • 楼主Dancing_Wave
  • 当前回复12
  • 已保存回复12
  • 发布时间2021/10/23 21:36
  • 上次更新2023/11/4 02:35:40
查看原帖
蒟蒻关于CSP-S T1的一些思路
147595
Dancing_Wave楼主2021/10/23 21:36

我来说说我的大致做法 不是讨论区题解

离散时间,将同类型航班按 LL 排序,对于每个航班,求出其所需要的最少的廊桥数量 xx ,发现 xx 不会受分配的廊桥数量变化而变化,然后将其加入到编号 xx 的廊桥中

xx 的方法:对于已经使用过的廊桥,维护该廊桥上最后一班航班离开时间。每次加入一个新航班时,查询这个航班的降落时,已使用过的空着的廊桥中编号最小的廊桥。

用数组动态存储每个廊桥最后的航班离开的时间 lastlast 。并用线段树维护 lastlast在一定区间中廊桥编号最小值。

求新的 xx 时查询前缀。加入航班后减去旧的 lastlast 加入新的 lastlast (所以用不了树状数组)。若查询时所有廊桥都不空闲则加入新的廊桥。

最后枚举 00nn 即可求出答案


提几个易错点

  • 查询空闲廊桥编号最小值不是查询最小 lastlast ,(编号最小的廊桥 lastlast 不一定最小)。所以只用堆(或优先队列)维护时间是错的

  • xx 不是单峰,所以用三分法也是错的


请广大的聪明智慧的洛谷OIer们帮蒟蒻证明正确性/证伪以及hack

最后,如果有意见或别的做法,欢迎讨论~

2021/10/23 21:36
加载中...