分块小结

简介:优雅的暴力—-通过划分成块,用整体操作来减少时间

基本思想:“大段维护,局部朴素”(完整块通过打标记或预处理来解决,部分块直接暴力)

块的取值:并非一定是n^0.5,具体需要分析时间复杂度,通常来说比n^0.5小一点会快些

优点:可以在线,适用性强,代码长度一般

缺点:效率较低(自带根号)

常用
 - lazy-tag思想打标记
 - 通过预处理块与块之间的答案来提高询问效率(对于那些不能O(1)求出的)
 - 对于插入操作考虑整体重构局部分裂(对于某个元素过多的块,直接分裂成两个块)
 - 用数据结构维护块(如list、vector)
 
应用:莫队算法 & 区间众数
  (莫队的本质是改变询问顺序来优化,通常用分块实现)

你可能感兴趣的:(学习笔记,分块)