uvalive3029(扫描图)
来源:互联网 发布:golang otter 编辑:程序博客网 时间:2024/04/25 18:35
题意:
给出一个矩阵,F代表空地,R代表障碍;问最大的空地矩阵(就有F组成的矩形)有多大,输出面积乘以3;
思路:
看了大白的思路;
就是扫描这张图,判断每一个点,它向上延伸,空地有多大,向左延伸,向右延伸空地有多大;然后就能计算这个点所在的矩形有多大,更新最大值即可:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N = 1005;int g[N][N], up[N][N], left[N][N], right[N][N];int main() {int t;scanf("%d", &t);while(t--) {int m, n;scanf("%d%d", &m, &n);for(int i = 0; i < m; i++)for(int j = 0; j < n; j++) {int ch = getchar();while(ch != 'F' && ch != 'R') ch = getchar();g[i][j] = ch == 'F' ? 0 : 1;}int ans = 0;for(int i = 0; i < m; i++) {int l = -1, r = n;for(int j = 0; j < n; j++)if(g[i][j] == 1) { up[i][j] = left[i][j] = 0; l = j; }else {up[i][j] = i == 0 ? 1 : up[i - 1][j] + 1;left[i][j] = i == 0 ? l + 1 : max(left[i - 1][j], l + 1);}for(int j = n-1; j >= 0; j--)if(g[i][j] == 1) { right[i][j] = n; r = j; }else {right[i][j] = i == 0 ? r-1 : min(right[i-1][j], r - 1);ans = max(ans, up[i][j]*(right[i][j]-left[i][j]+1));}}printf("%d\n", ans*3);}return 0;}
0 0
- uvalive3029(扫描图)
- Java雷达扫描图
- 手绘扫描图快速去底
- 威客理论英文期刊扫描图
- AR应用程序脱离扫描图功能实现
- Android自定义View- 雷达扫描图
- 扫描仪运用窍门:让扫描图愈加明晰的办法
- Vuforia的ImagetTarget的扫描图无法正常显示
- 地理栅格(遥感影像、DEM、扫描图等)的仿射变换系数文件解析
- 一款简单的右侧客服代码(带二维码扫描图)
- 怎么在ProgressDialog进度条你加入自定义的雷达扫描图?
- AutoCAD 描图方法小结
- MATLAB 描图获取坐标
- 将彩色图片转成线描图
- 扫码
- 扫频
- 扫端口
- CorelDraw应该怎么样才能学好描图技巧看看这个就能懂
- vmware下如何克隆linux虚拟机
- Objective-C 协议(protocol)
- 怎样用matlab读取一个文件夹下的多个子文件夹中的多个图片文件
- 上网小技巧
- hdu2064--汉诺塔3(找规律)
- uvalive3029(扫描图)
- Vim 系列(三) 进入 comfort zone
- 【二分图最大匹配】【匈牙利算法】poj1469 COURSES && poj2446 Chessboard
- poj2584——T-Shirt Gumbo
- thoughworks 读书雷达
- 程序流程控制
- Hibernate主键生成策略
- 图书简介:Spring Batch批处理框架
- String类中的方法