莱芜建设网站,二级域名可以做淘客网站,百度百科官网入口,wordpress双语站点最大子矩阵...悬线法..时间复杂度O(nm)悬线法就是记录一个H向上延伸的最大长度(悬线), L, R向左向右延伸的最大长度, 然后通过递推来得到. ------------------------------------------------------------------#includebits/stdc.husing namespace std;#define ok(c) … 最大子矩阵...悬线法..时间复杂度O(nm)悬线法就是记录一个H向上延伸的最大长度(悬线), L, R向左向右延伸的最大长度, 然后通过递推来得到. ------------------------------------------------------------------#includebits/stdc.husing namespace std;#define ok(c) ((c) F || (c) R)const int maxn 1009;int H[maxn][maxn], L[maxn][maxn], R[maxn][maxn], N, M;bool F[maxn][maxn];void Read() {cin N M;for(int i 0; i N; i) for(int j 0; j M; j) {char c getchar();for(; !ok(c); c getchar());F[i][j] c F; }}int main() {Read();for(int i 0; i N; i) {L[i][0] F[i][0];for(int j 1; j M; j) L[i][j] F[i][j] ? L[i][j - 1] 1 : 0;R[i][M - 1] F[i][M - 1];for(int j M - 2; ~j; j--) R[i][j] F[i][j] ? R[i][j 1] 1 : 0;}memset(H, 0, sizeof H);for(int i 1; i N; i)for(int j 0; j M; j) if(F[i][j] F[i - 1][j]) { H[i][j] H[i - 1][j] 1; L[i][j] min(L[i][j], L[i - 1][j]); R[i][j] min(R[i][j], R[i - 1][j]);}int ans 0;for(int i 0; i N; i) for(int j 0; j M; j) if(F[i][j]) ans max(ans, (H[i][j] 1) * (L[i][j] R[i][j] - 1));cout 3 * ans \n;return 0;}------------------------------------------------------------------ 3039: 玉蟾宫Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 581 Solved: 352[Submit][Status][Discuss]Description有一天小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫玉蟾宫宫主蓝兔盛情地款待了它们并赐予它们一片土地。这片土地被分成N*M个格子每个格子里写着R或者FR代表这块土地被赐予了rainbowF代表这块土地被赐予了freda。现在freda要在这里卖萌。。。它要找一块矩形土地要求这片土地都标着F并且面积最大。但是rainbow和freda的OI水平都弱爆了找不出这块土地而蓝兔也想看freda卖萌她显然是不会编程的……所以它们决定如果你找到的土地面积为S它们每人给你S两银子。Input第一行两个整数N,M表示矩形土地有N行M列。接下来N行每行M个用空格隔开的字符F或R描述了矩形土地。Output输出一个整数表示你能得到多少银子即(3*最大F矩形土地面积)的值。Sample Input5 6 R 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 FSample Output45HINT对于50%的数据1N,M200对于100%的数据1N,M1000SourcePoetize4 转载于:https://www.cnblogs.com/JSZX11556/p/4715241.html