單調棧 Poetize4 玉蟾宮

2021-06-09 21:58:57 字數 1501 閱讀 4083

背景 background

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

描述 description

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

現在freda要在這裡賣萌。。。它要找一塊矩形土地,要求這片土地都標著'f'並且面積最大。

但是rainbow和freda的oi水平都弱爆了,找不出這塊土地,而藍兔也想看freda賣萌(她顯然是不會程式設計的……),所以它們決定,如果你找到的土地面積為s,它們每人給你s兩銀子。

輸入格式 input format

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

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

輸出格式 output format

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

樣例輸入 sample input [複製資料]

樣例輸出 sample output [複製資料]

時間限制 time limitation

各個測試點1s

注釋 hint

對於50%的資料,1<=n,m<=200

對於100%的資料,1<=n,m<=1000

開始以為與usaco上的題目類似。

後來一看發現是矩形而不是正方形。。

於是就不會了。。。。。。

然後看了題解。寫了這題。

學習了一種叫做單調棧的東西。。

官方題解位址

var i,j,n,m,ans:longint;

s,l,h:array[0..1000]of longint;

f:array[0..1000,0..1000]of longint;

ch:char;

procedure work(k:longint);

var i,j,top,len,max:longint;

begin

for i:=1 to m do h[i]:=f[k,i];

fillchar(s,sizeof(s),0);

for i:=1 to m do l[i]:=0;

top:=0;s[top]:=0;l[top]:=0;max:=0;

for i:=1 to m do

begin

if h[i]>=s[top] then

begin

inc(top);

s[top]:=h[i];

l[top]:=1;

endelse

begin

len:=0;

while (top>0)and(s[top]>h[i]) do

begin

len:=len+l[top];

if max0) do

begin

len:=len+l[top];

if max

單調棧 城市遊戲(玉蟾宮)

給你 n times m 個格仔,每個格仔上有 r 或 f 現在要找一塊矩形土地,使這片土地都標有 f 且面積最大,讓你求出這個最大面積並 times3 輸出 面積最大,且為矩形,爆搜可以考慮一下,但爆搜肯定是超時的 話說有些題庫 n 3 竟然能過?在爆搜的時候我們能得到的乙個資訊就是,如果以某一高...

Tyvj1939 玉蟾宮(單調棧)

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

P4147 玉蟾宮 單調棧

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