luogu P1681 最大正方形II

2022-08-13 09:03:15 字數 802 閱讀 1939

交了十幾遍才過,本來這只是一道水題,然而誰讓我快讀寫炸了呢(詳情見「gg記錄(6)」)。。。

f[i][j]表示i,j位置為右下角的最大正方形

如果i或j為1,很顯然,f[i][j]的值最大為1,否則便要從三個方向取最小值轉移

如果不滿足轉移的條件,將其賦值為1即可

#includevoid read(int &y)

}int max(int x,int

y)int min(int x,int

y)int n,m,x,ans,a[1505][1505],f[1505][1505

];int

main()

if(a[i][j]==0&&a[i-1][j]==1&&a[i][j-1]==1) f[i][j]=min(min(f[i-1][j-1],f[i-1][j]),f[i][j-1])+1

;

else

if(a[i][j]==1&&a[i-1][j]==0&&a[i][j-1]==0) f[i][j]=min(min(f[i-1][j-1],f[i-1][j]),f[i][j-1])+1

;

else f[i][j]=1

; ans=max(f[i][j],ans);}}

printf("%d

",ans);

return0;

}

P1681 最大正方形 Iand II

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

luogu p1387 最大正方形

理論上來說可以暴力列舉邊長和右下角座標,而且似乎有人能用這方法過這道題。不過列舉太不現實,而且資料強一點的話就徹底沒辦法了,還是要dp。用兩個陣列l,w分別儲存每個位置 包括本身 向左和向上各有幾個連續的1,如果乙個位置是1,這個位置的w和l就能從別的位置轉移過來。似乎預處理能與輸入一起完成?不過我...

最大正方形

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