当我们把区间问题拓展到二维的方阵问题的时候,很多东西,其实就不会再去求那么难的东西了,二维问题主要考察的是从一维到二维的一个转化和拓展
然后,我们还是以静态方阵->带修方阵的顺序来介绍,至于动态方阵,我们可以参考精准覆盖问题的DLX算法中使用的数据结构,那就是舞蹈链,除此以外,在NOIP2017的day2T3,队列一题我们也可以有着启发
然而动态方阵与我们这些老套的数据结构还是脱轨的,此处就不介绍了(强行解释一波)
先说静态方阵,我们针对静态方阵无非就是查询,查询子矩阵的最值或者求子矩阵的和,对于查询子矩阵的最值来说,我们有二维的ST算法撑腰:https://www.cnblogs.com/aininot260/p/9379833.html
而对于子矩阵和的问题,二维的前缀和也是可以胜任的
考虑带修方阵问题,我们如果是修改点查询矩阵,修改矩阵查询点,修改矩阵查询矩阵,可以直接扔给二维树状数组来做,基本秒杀:https://www.cnblogs.com/aininot260/p/9336527.html
而对于修改区间查询区间最值的问题,我们交给功能强大的二维线段树来做(这里是树套树的形式,比四分树更加契合):https://www.cnblogs.com/aininot260/p/9375048.html
我们在区间问题里面曾经引出了一个带lazy tag的,功能无比强大的线段树,但是功能如此强大的二维线段树的板子,至今还是无能为力
对于三维区间问题,我们在二维树状数组里面给出了三维树状数组的模板,并给出了点修改区间查询和区间修改点查询的例子,将二维树状数组的区间修改区间查询拓展到三维形式
。。就是传说中的三维区间的修改和查询了,是不是很帅。。
总的来说,有了二维树状数组以及二维ST这两个东西,这些模板题都是没有问题的