Difficulty:6.5 / Medium
Tag:莫队,bitset
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
查询三个区间,看似需要维护 666 个坐标,O(n116)O(n^{\frac{11}{6}})O(n611 )。实则不然。
我们可以将三个区间拆开来处理,变成 3m3m3m 个询问。
但是这个时候询问顺序就打乱了,同一次询问的区间在不同的时间出现,怎么得到答案呢?
答案是通过 bitset 暴力记录下当前的信息,然后将同一次询问的信息按位与即可。
这样就做到了 O(nmw+mm)O(\frac{nm}{w}+m\sqrt m)O(wnm +mm ) 了。
但空间也是 O(nmw)O(\frac{nm}{w})O(wnm ) 开不下啊。
可以将查询分成 kkk 组处理,只需要保证 O(nmkw)O(\frac{nm}{kw})O(kwnm ) 能开的下就行。这时时间复杂度就是 O(nmw+mmk)O(\frac{nm}{w}+m\sqrt{mk})O(wnm +mmk ) 了。挺宽松的,不需要卡常。