城市遊戲 單調棧

2021-09-25 23:29:49 字數 1366 閱讀 9283

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

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

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

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

輸入格式

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

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

每行末尾沒有多餘空格。

輸出格式

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

資料範圍

1≤n,m≤1000

輸入樣例:

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首先我們觀察這道題目其實和之前的例題acwing131.直方圖中最大的矩形,十分相似,但是之前這道題的水平面是已經確定好了,那麼這道題目是不是也可以這麼做呢?我們可以列舉水平面,看每乙個平面上的最大值即可

#include #include#includeusing namespace std;

int n,m;

char g[1010][1010];

int arr[1010][1010];

int l[1010],r[1010];

stacks1,s2,s3;

int work(int t[1010])

if(!s1.empty()) l[i]=s1.top();

else l[i]=0;

s1.push(i);

}s2=s3;

for(int i=m;i>=1;i--)

if(!s2.empty()) r[i]=s2.top();

else r[i]=m+1;

s2.push(i);

}int ans=0;

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

return ans;

}int main()

int ans=0;

for(int i=1;i<=n;i++) ans=max(ans,work(arr[i]));

cout<<3*ans

}

城市遊戲 單調棧

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

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

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

單調棧 Acwing 152 城市遊戲

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