算法浅谈之DP悬线法

悬线法

  • 用途

解决给定矩阵中知足条件的最大子矩阵数组

  • 作法

用一条线(横竖貌似都行)左右移动直到不知足约束条件或者到达边界spa

  • 定义

\(left[i][j]\):表明从\((i,j)\)能到达的最左位置blog

\(right[i][j]\):表明从\((i,j)\)能到达的最右位置get

\(up[i][j]\):表明从\((i,j)\)向上扩展最长长度.class

  • 状态转移

\[left[i][j]=max(left[i][j],left[i-1][j])\]扩展

\[right[i][j]=min(right[i][j],right[i-1][j])\]移动

  • 至于为何递推公式中考虑上一层的状况?

是由于\(up\)数组的定义,\(up\)数组表明向上扩展最长长度, 因此须要考虑上一层的状况.di

参考博文:https://rpdreamer.blog.luogu.org/p1169display

相关文章
相关标签/搜索