Maximal submatrix 杭电多校 前缀和+模拟 超详细讲解 图文并茂
给定一个 n * m 的矩阵,求出最大的列不递减子矩阵。换句话说就是对于这个子矩阵,每列从上到下都是要非递减的。于是我们先处理竖向的非递减序列,存到vis数组中,vis[x][y] 就表示在这个坐标,上面有多长的递减序列。随后我们遍历每个点,对于当前的L->R区间取最小值,然后乘上L-R的距离就是当前子矩阵的大小。如图所示,当目前值为1的时候就移动左区间顶点,并重新取高以求更大的答案可能。特别要注意的是,跑前缀处理的时候第一行所有点得先置为1。否则就计算当前区间可能的答案,并于ans比较,取大值.
原创
2024-03-26 01:30:55 ·
266 阅读 ·
0 评论