最大子矩阵(悬挂线)
//如果一个矩形最大,那么该矩形其中的一列必定可以向左向右扫描最大,时空复杂度O(n*m)
#include<cstdio>
#include<iostream>
using namespace std;
const int mx=1002;
int a[mx][mx],l[mx][mx],up[mx][mx],r[mx][mx],n,m;
int main()
{int T;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);for(int i=1; i<=n; ++i)for(int j=1; j<=m; ++j){char ch=getchar();while(ch!='F'&&ch!='R') ch=getchar();a[i][j]=ch=='F'?0:1;}int ans=0;for(int i=1;i<=m;++i)r[0][i]=m+1;for(int i=1; i<=n; ++i) //逐行遍历{int lo=0,ro=m+1;//lo记录的是该行向左最近的障碍的位置,ro向右的障碍位置for(int j=1; j<=m; ++j)if(a[i][j]) l[i][j]=up[i][j]=0,lo=j;else up[i][j]=up[i-1][j]+1,l[i][j]=max(l[i-1][j],lo);for(int j=m; j>0; --j)if(a[i][j]) r[i][j]=m+1,ro=j;else r[i][j]=min(r[i-1][j],ro),ans=max(up[i][j]*(r[i][j]-l[i][j]-1),ans);}printf("%d\n",ans*3);}return 0;
}
最大子矩阵(悬挂线)相关推荐
- 求一个矩阵的最大子矩阵
#include <iostream> #include <string> #include <assert.h> #include <malloc.h> ...
- 最大子矩阵(降维处理)
题目描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的矩阵 0 -2 -7 0 9 2 -6 2 -4 1 - ...
- 带限制条件的最大子矩阵 - 牛客
链接:https://www.nowcoder.com/acm/contest/131/B 来源:牛客网 题目描述 矩阵 M 包含 R 行 C 列,第 i 行第 j 列的值为 Mi,j. 请寻找一个子 ...
- 软件工程——求二维数组所有子矩阵的和的最大值
题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为 ...
- 子矩阵(暴搜(全排列)+DP)
子矩阵(暴搜(全排列)+DP) 一.题目 子矩阵 时间限制: 1 Sec 内存限制: 128 MB 提交: 1 解决: 1 [提交][状态][讨论版] 题目描述 给出如下定义: 1. 子矩阵:从一 ...
- 【降维解法:最大字段和-最大子矩阵和-最终版最大子长方体和】【UVA10755】Garbage Heap...
突然感觉刷完这一套专题后 码力有了质的飞跃,fighting 努力会有结果! 最大字段和是一个很经典的问题 O(n)算法 而对于最大子矩阵和 可以思考一个这样的想法 枚举上下边界i,j把i到j这一段的 ...
- LeetCode Maximal Square(最大子矩阵)
问题:给出一个由0,1组成的二维数组,求由1组成的最大子矩阵 思路:第一种方式使用暴力法,在遍历二维数组时,如果当前元素是1,则以当前位置为起点,判断先增的一行,一列是否全是1,如果是,则将当前边长度 ...
- 利用动态规划求连续数组最大和以及最大子矩阵的和
题目一: 给定一个整型数组,数组中有正有负,求最大连续子序列的和. 解法: 利用动态规划的思想. 设f(n)表示以a[n]为子序列最后一个元素的最大和,则可以有下面的规则: (1)当f(n-1)< ...
- hdu2830 可交换行的最大子矩阵
题意: 求最大子矩阵,但是相邻的列之间可以相互交换... 思路: 回想下固定的情况,记得那种情况是开俩个数组 L[i] ,R[i],记录小于等于i的最左边和最右边在哪个位置,对 ...
最新文章
- 万字总结,体系化带你全面认识 Nginx
- 让Windows控制台应用程序支持VT100---原理篇
- 每一个正整数可以表示为3个三角形数之和
- 多级嵌套json格式
- 仿WINDWS无限级Ajax菜单树升级1.3版(修补了严重BUG)
- c语言单向链表经典,C语言基础 - 实现单向链表
- NYOJ11 - 奇偶数分离
- DNS和DHCP之间有哪些区别
- C99的新关键字_Bool
- 老掉牙的ArrayList解析它它它又来了
- 小甲鱼python自学笔记
- 「2020目标一」项目管理PMP
- 经典卷积神经网络---VGG16详解
- win7虚拟磁盘服务器,深度Win7 64位旗舰版系统如何创建虚拟磁盘
- 1232_使用SCons实现WindRiver Diab编译器的命令行自动化编译环境
- linux用ping命令测试网速,怎么用ping命令测试网速
- DEVC++安装后编程运行时老是提示“源文件未编译”
- js中.getMonth() 获取月份比实际月份少一个月
- 优化工具MOZ功能详细解说
- H5微信授权登录后点击返回出现循环登录无法退出问题