题解:P11232 [CSP-S 2024] 超速检测(民间数据)
26 Oct, 2024 11:06 PM +08:00
挺麻烦的一个题,赛时调了 2h 。
先写暴力
O(nm) 算出来第一个输出,然后 O(2mnm) 枚举删哪些测速点,可以骗到一点分。
考虑优化掉 O(nm)
对 p 从小到大排序,设 vi,q 是第 i 辆车在 q 点的速度 ,则对于第 i 辆车 A :
-
如果 ai<0, A 超速当且仅当 vi,P>V ,其中 P 是最小的 pj 满足 pj ≥ di
-
如果 ai ≥ 0, A 超速当且仅当 vi,pm>V
对于 ai<0 ,显然可以二分,整体时间复杂度 O(nlogm) 。
考虑优化掉 O(2mnm)
p 是有序的,可以把每辆车的测超速范围看成一个线段 X ,具体来说,对于第 i 辆车:
- 如果 ai<0, Xi=[P,Q] ,其中 P 是最小的 j 满足 vi,pj>V , Q 是最大的 j 满足 vi,pj>V 。
- 如果 ai ≥ 0, Xi=[P,m] ,其中 P 是最小的 j 满足 vi,pj>V 。
因为 vi,pj 在 pj ≥ di 上具有单调性,所以二分求 X,时间复杂度 O(nlogm) 。
此时问题转化成 P1803 线段覆盖,整体时间复杂度 O(nlogm) 。
代码略(
本文最初发表于 Luogu,于 2026-04-19 同步至本站。
题面: https://www.luogu.com.cn/problem/P11232