莫队
做法:将序列分块,对询问排序,对于左端点块相同,按右端点排序。(奇偶优化)
证明:设块大小为 \(B\),同一块内,右端点变化是 \(O(n)\),遂 \(O(n^2 / B)\),左端点一共 \(q\) 个,每次变化最多 \(O(B)\),遂 \(O(Bq)\)。由均值不等式,易得 \(Bq+n^2/B \ge 2n\sqrt q\),\(B = n / sqrt q\),通常分母来个 1.5 的常数更牛逼。
P4135
区间出现偶数次的数种类。
考虑按照是否在整块 / 散块中做一个真值表,然后容斥原理维护即可。
需要用到每种数找第一个作为代表元。这个trick
P4168
区间众数。
考虑区间答案是 \(bl[l]+1 \to bl[r]-1\) 这些块众数,以及零散块中的数组成。
因为如果整块中存在数字可以通过零散块出现而变得牛逼,这件事情可以在零散块中统计了。