n×m 的方阵。
三种操作:
SUM 求一个矩阵的和
MAX 求一个矩阵的最大值
MIN 求一个矩阵的最小值
n,m≤800
每个询问的较长边长度不超过较短边的两倍。
思路:
对于 SUM 操作,二维前缀和维护即可
对于 MAX 和 MIN 操作,最常规的方法是开一个四维数组 f[x][y][i][j] 表示以 (x, y) 为左上角,长为 2i,宽为 2j 的矩形内部的最大值(还有最小值),但是这个东西会 MLE。
因为长不超过宽的二倍,我们考虑把矩形拆成两个正方形,用 f[x][y][i] 表示以 (x, y) 为左上角,边长为 2i 的正方形内部的最大值(还有最小值),这个东西就非常好不会 MLE,但是我写的这个代码似乎有点问题,没调出来到底是怎么回事。
代码在二楼