玉蟾宮 洛谷P4147

2021-09-24 23:31:38 字數 1487 閱讀 1983

題目描述

有一天,小貓rainbow和freda來到了湘西張家界的天門山玉蟾宮,玉蟾宮宮主藍兔盛情地款待了它們,並賜予它們一片土地。

這片土地被分成nm個格仔,每個格仔裡寫著』r』或者』f』,r代表這塊土地被賜予了rainbow,f代表這塊土地被賜予了freda。

現在freda要在這裡賣萌。。。它要找一塊矩形土地,要求這片土地都標著』f』並且面積最大。但是rainbow和freda的oi水平都弱爆了,找不出這塊土地,而藍兔也想看freda賣萌(她顯然是不會程式設計的……),所以它們決定,如果你找到的土地面積為s,它們每人給你s兩銀子。

輸入

第一行兩個整數n,m,表示矩形土地有n行m列。

接下來n行,每行m個用空格隔開的字元』f』或』r』,描述了矩形土地。

輸出

輸出乙個整數,表示你能得到多少銀子,即(3最大』f』矩形土地面積)的值。

輸入樣例

5 6r f f f f f

f f f f f f

r r r f f f

f f f f f f

f f f f f f

輸出樣例

45資料範圍

50%的資料:1≤n,m≤200;

100%的資料:1≤n,m≤1000。

思路

單調棧,維護寬度和高度

先用字首和算出每行高度,對於每一行進行維護

#include

#include

#include

#include

#include

using

namespace std;

const

int n=

1005

;int a[n]

[n];

int sum[n]

[n];

struct node

s[n]

;int h[n]

;intmx(

int x,

int y)

intmain()

}for

(i=1

;i<=n;i++

)int top=

0,len=

0,ans=0;

for(i=

1;i<=n;i++

)else

top++

; s[top]

.h=h[j]

; s[top]

.w=len+1;

}}len=0;

while

(top)

} ans*=3

;printf

("%d\n"

,ans)

;return0;

}

洛谷P4147 玉蟾宮

傳送門給定乙個 n m 的 0 1 矩陣,求最大子矩陣 滿足矩陣內所有元素均為 1 輸出矩陣大小 3 懸線法,最大子矩陣板子題 也可以單調棧和並查集,但是窩不會 維護三個值 l i j 和 r i j up i j 分別代表當前點 i,j 向左最長的延伸到的點位置,向右最長的延伸到的點位置,向上最長...

P4147 玉蟾宮 單調棧

有一天,小貓rainbow和freda來到了湘西張家界的天門山玉蟾宮,玉蟾宮宮主藍兔盛情地款待了它們,並賜予它們一片土地。這片土地被分成n m個格仔,每個格仔裡寫著 r 或者 f r代表這塊土地被賜予了rainbow,f代表這塊土地被賜予了freda。現在freda要在這裡賣萌。它要找一塊矩形土地,...

P4147 玉蟾宮 單調棧

有一天,小貓rainbow和freda來到了湘西張家界的天門山玉蟾宮,玉蟾宮宮主藍兔盛情地款待了它們,並賜予它們一片土地。這片土地被分成n m個格仔,每個格仔裡寫著 r 或者 f r代表這塊土地被賜予了rainbow,f代表這塊土地被賜予了freda。現在freda要在這裡賣萌。它要找一塊矩形土地,...