给一个长度为 N N 的正整数序列,初始值都小于 。
你有两种操作:
1. 使一个区间内的数都增加 W W ;
2. 查询一段区间内大于等于 的数有多少个;
执行 Q Q 此操作。
, Q≤3000 Q ≤ 3000 , 1≤W≤1000 1 ≤ W ≤ 1000 , 1≤C≤1,000,000,000 1 ≤ C ≤ 1 , 000 , 000 , 000
简单题,分块+二分。
先分块,假设块大小是 a a ,然后块内的计数排序,
修改:整块直接打标记,不满块暴力修改,然后再排序,
O(na+aloga)
O
(
n
a
+
a
log
a
)
询问:整块直接二分查询,不满的块暴力查询,
O(nalogna+a)
O
(
n
a
log
n
a
+
a
)
总复杂度就是 O(qn‾√logn‾√+wn‾√) O ( q n log n + w n )