洛谷 P1387 最大正方形(dp,滾動陣列)

2021-08-22 18:19:53 字數 628 閱讀 7810

今天比賽的時候寫的是字首和,開了三個二維的陣列,然後比賽的那道題只給了8mb記憶體,於是就愉快的mle了。

然後學習了一下大佬的滾動陣列寫法,竟然只要乙個2∗

maxn

2 ∗m

ax

n的dp陣列,震驚。。。

其實原理就是dp只基於當前行和上一行的狀態,於是我們只用儲存這兩行的資訊就可以了。

狀態轉移方程: dp

[i&1

][j]

=min

+1d p[

i&1]

[j]=

min+

1其中i&

1 i&1

和 ∼i

&1∼ i&

1就是陣列滾動的關鍵了,利用的就是

i i

的奇偶性。

#include

using

namespace

std;

const

int maxn = 2100;

int dp[2][maxn];

int main()

}printf("%d\n",ans);

return

0;}

DP 洛谷 P1387 最大正方形

題目描述 在乙個n m 的只包含0和 1的矩陣裡找出乙個不包含 0的最大正方形,輸出邊長。輸入輸出格式 輸入格式 輸入檔案第一行為兩個整數 n,m 1 n,m 100 接下來 n行,每行 m個數字,用空格隔開,0或 1.輸出格式 乙個整數,最大正方形的邊長 輸入輸出樣例 輸入樣例 1 複製4 4 0...

洛谷 P1387 最大正方形 dp

題目描述 在乙個n m的只包含0和1的矩陣裡找出乙個不包含0的最大正方形,輸出邊長。輸入輸出格式 輸入格式 輸入檔案第一行為兩個整數n,m 1 n,m 100 接下來n行,每行m個數字,用空格隔開,0或1.輸出格式 乙個整數,最大正方形的邊長 輸入輸出樣例 輸入樣例 1 4 4 0 1 1 1 1 ...

洛谷 P1387 最大正方形 ( dp

在乙個n m的只包含0和1的矩陣裡找出乙個不包含0的最大正方形,輸出邊長。字首和思想 維護乙個dp i j d p i j 表示的是矩陣內以i,j i,j 為右下角的最大的正方形大小 include using namespace std define ll long long define pb ...