51Nod 1158 全是1的最大子矩陣

2021-08-09 08:50:18 字數 994 閱讀 1442

1158 全是1的最大子矩陣

基準時間限制:1 秒 空間限制:131072 kb 分值: 80 

難度:5級演算法題

給出1個m*n的矩陣m1,裡面的元素只有0或1,找出m1的乙個子矩陣m2,m2中的元素只有1,並且m2的面積是最大的。輸出m2的面積。

input

第1行:2個數m,n中間用空格分隔(2 <= m,n <= 500)

第2 - n + 1行:每行m個數,中間用空格分隔,均為0或1。

output

輸出最大全是1的子矩陣的面積。
input示例

3 3

1 1 0

1 1 1

0 1 1

output示例

4

李陶冶(題目提供者)

水題 把0看作極小值 求最大子矩陣即可 

1 #include 2 #include 3 #include 4

5 typedef long

long

ll;6

7const

int inf=1000000;8

const

int maxn=510;9

10int

n,m;

1112

inta[maxn][maxn];

1314

ll ans;

1516 inline void read(int&x)

2223

24int

hh()

32for(int i=0;i<=n;++i)

33for(int j=i+1;j<=n;++j) 40}

41 std::cout<

42return0;

43}4445

int sb=hh();

46int main(int argc,char**argv)

**

51nod 1158 全是1的最大子矩陣

題目鏈結在這兒 如果我的部落格費解,可以看這篇部落格,認為清晰。首先把子矩陣預處理,g i j 表示第 i j 號元素能向左延伸的長度。進而針對每一列,假設是c列,考慮g i c i 1,row 得到g i c 元素在這一列上作為作為最小值的長度。假設這個區間是 u,d 那麼長度為d u 1,那麼臨...

51nod 1158 全是1的最大子矩陣

題目傳送門 題意 給出1個m n的矩陣m1,裡面的元素只有0或1,找出m1的乙個子矩陣m2,m2中的元素只有1,並且m2的面積是最大的。輸出m2的面積。這道題,是一道十分玄學的題目。在題目上方有兩個標籤 單調棧 和 dp 但實際上,這道題根本就不需要單調棧或是dp。因為我不會,所以我只會玄學 首先,...

51nod 1158 全是1的最大子矩陣(單調棧)

思路 與這一題largest rectangle in a histogram很像,只不過本題需要做m次單調棧 因為有m行 先處理出每一行矩形的高度,然後以每一行為底求矩形的面積即可。include using namespace std const int n 1e5 7 int n,m,x,an...