codevs 1159 最大全0子矩陣

2021-07-05 19:34:07 字數 1047 閱讀 3981

時間限制: 1 s

空間限制: 128000 kb

題目描述 description

在乙個0,1方陣中找出其中最大的全0子矩陣,所謂最大是指o的個數最多。

輸入描述 input description

輸入檔案第一行為整數n,其中1<=n<=2000,為方陣的大小,緊接著n行每行均有n個0或1,相鄰兩數間嚴格用乙個空格隔開。

輸出描述 output description

輸出檔案僅一行包含乙個整數表示要求的最大的全零子矩陣中零的個數。

樣例輸入 sample input 5

0 1 0 1 0

0 0 0 0 0

0 0 0 0 1

1 0 0 0 0

0 1 0 0 0

樣例輸出 sample output9

這道題剛開始不會,後來看了一篇國家集訓隊的**就比較簡單了,是王知昆的《**用極大化思想解決最大子矩形問題》,

用h[j]表示第j列從第1行到第i行的最大高度

l[j]表示h[j]的左邊界,r[j]表示h[j]的右邊界,最後就ans=max(ans,h[j]*(r[i] - l[i]  + 1)

**:

#include#includeusing namespace std;

int n;

int map[2000 + 5][2000 + 5];

int h[2000 + 5];

int l[2000 + 5];

int r[2000 + 5];

int ans = 0;

int main()

for(int i = 1; i <= n; ++i)h[i] = 0,l[i] = 1,r[i] = n;

for(int i = 1; i <= n; ++i)

else

} for(int j = n; j >= 1; --j)

else

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

return 0;

}

codevs1159 最大全0子矩陣

題目描述 description 在乙個0,1方陣中找出其中最大的全0子矩陣,所謂最大是指o的個數最多。輸入描述 input description 輸入檔案第一行為整數n,其中1 n 2000,為方陣的大小,緊接著n行每行均有n個0或1,相鄰兩數間嚴格用乙個空格隔開。輸出描述 output des...

CODEVS1159 最大全0子矩陣解題報告

題目描述 description 在乙個0,1方陣中找出其中最大的全0子矩陣,所謂最大是指o的個數最多。輸入描述 input description 輸入檔案第一行為整數n,其中1 n 2000,為方陣的大小,緊接著n行每行均有n個0或1,相鄰兩數間嚴格用乙個空格隔開。輸出描述 output des...

1159 最大全0子矩陣

f i,j 表示以 i,j 為右下角的最大全0子矩陣的邊長 若a i j 1,f i,j 0 否則 f i,j min 1 這樣求得的是最大全0正方形子矩陣 要求長方形矩陣,上述思路行不通 假設以 i,j 為右下角的最大矩陣 12 它可能是3 4 4 3 2 6 6 2 1 12 12 1 按上述思...