洛谷P4147 玉蟾宮

2022-06-27 21:57:18 字數 876 閱讀 8997

傳送門給定乙個\(n*m\)的\(0/1\)矩陣,求最大子矩陣:滿足矩陣內所有元素均為\(1\).

輸出矩陣大小\(*3\)

懸線法,最大子矩陣板子題

(也可以單調棧和並查集,但是窩不會)

維護三個值\(l[i][j]\)和\(r[i][j],up[i][j]\),分別代表當前點\((i,j)\)向左最長的延伸到的點位置,向右最長的延伸到的點位置,向上最長的延伸長度

(我們稱當前點和其左右相鄰的點都是\(1\)的話就可以延伸。也就是說,如果當前點\(a[i][j]==1\),那麼這個點就非法)

所以我們可以直接列舉\(i,j\)找到這個矩陣就行了/fad

具體實現看**

#includeusing namespace std;

template inline void read(t &x)ch=getchar();}

while(isdigit(ch))

x=f?-x:x;

return ;

}template inline void write(t x)

const int n=1005;

int n,m;

int a[n][n],l[n][n],r[n][n],up[n][n],ans;

char op[2];

int main()

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

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

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

ans=max(ans,(r[i][j]-l[i][j]+1)*up[i][j]);

} }write(ans*3);

return 0;

}

玉蟾宮 洛谷P4147

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

P4147 玉蟾宮 單調棧

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

P4147 玉蟾宮 單調棧

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