洛谷P4147 最大子矩陣處理 懸線法

2021-08-20 02:53:32 字數 772 閱讀 4273

題目大意:第一行n, m表示矩形土地有n行m列。接下來輸入土地,由f和r組成,問最大的f矩形土地的面積,答案乘以3

將f置為1,r置為0,相當於求最大1矩陣的面積

l[i][j]表示從座標(i, j)最左邊到達0的位置

r[i][j]表示從座標(i, j)最右邊到達0的位置

h[i][j]表示從座標(i, j)向上擴充套件的最大高度

則面積表示式:(r[i][j] - l[i][j] - 1) * h[i][j];

#include 

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 1010;

int n, m;

int a[maxn][maxn];//地圖,f為1,r為0

int l[maxn][maxn], r[maxn][maxn];//該座標最左(右)邊到達0的位置

int h[maxn][maxn];//該位置向上能擴充套件的最大高度

int ans;

void solve()

for(i = 1; i <= n; ++i)

}}int main()

solve();

printf("%d\n", ans * 3);

return

0;}

P4147 玉蟾宮 懸線法求最大子矩陣

p4147 玉蟾宮 懸線法,l r up 分別表示 i,j 這個點向左,右,上能到達的遠點。然後面積就很好辦了。具體實現見 然而,還有更優秀的演算法,可是我還沒學會嚶嚶嚶,可以看看這題 p1578 奶牛浴場 includeusing namespace std const int n 1005 in...

玉蟾宮 洛谷P4147

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

洛谷P4147 玉蟾宮

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