Luogu P2801 教主的魔法
在洛谷中查看
\(1\) 思路:
\(1.0\) 我们考虑使用分块做,但查询操作也不能预处理啊,\(c\) 可是 \(10^9\) 级别的。
\(1.1\) 那么让我们来学习一下分块的找 大于/小于 \(c\) 的元素的个数的方法:
我们需要保证每次每个块内都是有序的,目的是为了查询时倍增或二分。
那么,一开始,我们先将每个块内排序(仅仅是每个块内,不是整体)。
然后看操作:
- 修改操作:将 \([ l , r ]\) 内的元素值都增加 \(w\) 。
\(\quad\) 对于整块:打上懒标记。
\(\quad\) 对于散块:暴力修改,但要注意的是,我们已经排完序了,所以需要记录一下位置
总时间复杂度:\(O(3Q \sqrt{n})\),即 \(O(9 \times 10^6)\)。
- 查询操作: