算法淺談之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

相關文章
相關標籤/搜索