Sol I:
函数扫描线,插入-标记-回收。
每次拉出 \([l_i,r_i]\) 打 +1 标记然后和原来的平衡树合并。
时间复杂度 \(O(n\log^2n)\)。
Sol II:
考虑线段树维护分段函数,因为函数值不降,所以可以双指针复合。
初始化 build 的时间复杂度是 \(O(n\log n)\)。
查询的时候二分就是 \(O(q\log ^2 n)\),但是其实可以分散层叠,这样能做到 \(O(q\log n)\) 查询。
Sol I:
函数扫描线,插入-标记-回收。
每次拉出 \([l_i,r_i]\) 打 +1 标记然后和原来的平衡树合并。
时间复杂度 \(O(n\log^2n)\)。
Sol II:
考虑线段树维护分段函数,因为函数值不降,所以可以双指针复合。
初始化 build 的时间复杂度是 \(O(n\log n)\)。
查询的时候二分就是 \(O(q\log ^2 n)\),但是其实可以分散层叠,这样能做到 \(O(q\log n)\) 查询。