【刷题笔记】p2217 分割矩阵
思路
首先注意到要求矩阵和,想到的肯定是二位前缀和。
- 设 \(S_{i,j}\) 表示的是以 \((i,j)\) 为右下角,长为 \(A\),宽为 \(B\) 的矩阵和。
- 设 \(s_{i,j}\) 表示的是以 \((i,j)\) 为右下角,长为 \(C\),宽为 \(D\) 的矩阵和。
然后再来考虑一个问题,如果我们每次都枚举大矩形的右下角,然后再枚举合法的小矩形的右下角,那时间复杂度肯定会爆炸。
于是我们想到了神奇的单调队列,因为这东西很像二维单调队列。
- 设 \(Q_{i,j}\) 表示的是从 \((i - A + 1,j)\) 到 \((i, j)\),\(s\) 数组的最小值。
- 设 \(q_{i,j}\) 表示的是以 \((i,j - B + 1)\) 到 \((i,j)\),\(Q\) 数组的最小值。
最后答案就是 \(S_{i,j}\) 减去 \(q_{i,j}\) 的差的最大值。

浙公网安备 33010602011771号