分块
我们刚才学习了树状数组和线段树,树状数组是基于二进制+倍增的思想,线段树是基于分治的思想,为什么他们都能比线性的数据结构更高效的执行指令呢?因为他们把序列的元素分分合合成大大小小的"段",然后再另外的继续维护这个"段",然后再把这个段进行一个结合
可想而知,树状数组和线段树都会存在瑕疵,在维护比较复杂的信息的时候比较吃力,不会怎么简单的直观的,但是分块算法就是好东西
分块算法的思想就是,通过恰当的划分,准备处理一部分信息并保存,用空间换取时间,达到平衡,分块有点像暴力算法,他的效率虽然不高,但是他更简单更实用
分块算法是一种思想,他没有具体的代码,需要根据不同的题来看,因题而异,就好比用线段树树状数组来解决的问题吧,我们用分块来解决:
题目如下:
给定数列,然后进行执行指令
1.”c l r d“这种指令,表示数列的第l个到第r个都加上d
2.”q l r“这种指令,表示询问数列中第l个到第r个的和
这种题用线段树树状数组解决都不是问题
分块算法是一种提高序列操作效率的技术,它通过将数据分块存储和处理,以空间换取时间,平衡复杂性和速度。与树状数组和线段树不同,分块算法更注重简单实用,尤其适用于处理部分信息。例如,在面对给定数列的‘clrd’和‘qlr’指令时,虽然线段树和树状数组能有效解决,但分块算法提供了一种暴力但直接的解决方案。这种算法的核心在于恰当划分和信息维护,适应不同问题需求。
939

被折叠的 条评论
为什么被折叠?



