POJ 3494(最大全1子矩陣,單調棧)

2021-06-29 02:02:05 字數 499 閱讀 2801

題目:

分析:相當於是最大直方和的二維版,對於最大直方和問題,我們對每個點找到最左邊大於等於它的位置和最右邊大於等於它的位置,用乙個單調棧可以在o(n)空間o(n)時間內完成,對於本題,我們即分別將每一行作為直方圖的x軸,所以時間上是o(mn),空間上仍需o(n)輔助

#include #define max	2005

inline int max(int a, int b)

int m, n, a[max][max], ans;

int l[max], st[max], top;

void floor(int f)

ans = max(ans, a[f][n-1] * l[n-1]);

top = 0;

st[++top] = n-1;

for(int i = n-2; i > -1; --i)

}int main()

return 0;

}

poj 3494 dp 最大全1子矩陣

題意 給定乙個n m大小的0 1矩陣,求所有元素都為1的最大子矩陣。思路 把2維轉化為一維 這一點有點像poj1050求最大子矩陣 列舉每一行。dp i j 的值表示第 i,j 個位置作為底,它上面的 包括自己 的連續1的個數。然後通過棧的單調性求每行的 最大值 每行的情況如同poj2559 可以用...

最大全1子矩陣

題目描述 在乙個m n的矩陣中,所有的元素只有0和1,從這個矩陣中找出乙個面積最大的全1子矩陣,所謂最大是指元素1的個數最多。輸入 輸入可能包含多個測試樣例。對於每個測試案例,輸入的第一行是兩個整數m n 1 m n 1000 代表將要輸入的矩陣的大小。矩陣共有m行,每行有n個整數,分別是0或1,相...

最大全1子矩陣

給出1個m n的矩陣m1,裡面的元素只有0或1,找出m1的乙個子矩陣m2,m2中的元素只有1,並且m2的面積是最大的。輸出m2的面積。input 第1行 2個數m,n中間用空格分隔 2 m,n 100 第2 n 1行 每行m個數,中間用空格分隔,均為0或1。output 輸出最大全是1的子矩陣的面積...