博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 P4147 玉蟾宫 (最大子矩形问题)
阅读量:6229 次
发布时间:2019-06-21

本文共 1013 字,大约阅读时间需要 3 分钟。

这道题用到了悬线法,非常牛逼,可以看这个论文。

#include
#include
#include
#include
#define REP(i, a, b) for(int i = (a); i < (b); i++)#define _for(i, a, b) for(int i = (a); i <= (b); i++)using namespace std; const int MAXN = 2123;int l[MAXN][MAXN], r[MAXN][MAXN], h[MAXN][MAXN];int a[MAXN][MAXN], n, m; int main(){ scanf("%d%d", &n, &m); _for(i, 1, n) _for(j, 1, m) { char c; cin >> c; a[i][j] = (c == 'F'); h[i][j] = 1; l[i][j] = r[i][j] = j; } _for(i, 1, n) { _for(j, 2, m) if(a[i][j-1] && a[i][j]) l[i][j] = l[i][j-1]; for(int j = m - 1; j >= 1; j--) if(a[i][j+1] && a[i][j]) r[i][j] = r[i][j+1]; } int ans = 0; _for(i, 1, n) _for(j, 1, m) { if(i > 1 && a[i][j] && a[i-1][j]) { h[i][j] = h[i-1][j] + 1; l[i][j] = max(l[i][j], l[i-1][j]); r[i][j] = min(r[i][j], r[i-1][j]); } ans = max(ans, (r[i][j] - l[i][j] + 1) * h[i][j]); } printf("%d\n", 3 * ans); return 0;}

 

转载于:https://www.cnblogs.com/sugewud/p/9819370.html

你可能感兴趣的文章
Linux高负载下优化MYSQL
查看>>
Binder服务-底层驱动
查看>>
国内外一些ip反查域名的网站
查看>>
迪普防毒墙产品线
查看>>
sublime Text技巧
查看>>
mysql配置参数详解
查看>>
百万级SQL查询优化
查看>>
linux SWAP 分区建立及释放内存
查看>>
Rocks 头结点更改public IP 上网IP地址
查看>>
phpcmsv9 调用多个栏目下文章的两个办法
查看>>
LINUX帐号管理命令简介
查看>>
oracledatabase12g.com目前使用的wordpress插件
查看>>
Python random模块
查看>>
nagios 详细部署操作(二)
查看>>
流程式编程
查看>>
小蚂蚁学习APP接口开发(5)—— APP接口实例——单例模式连接数据库
查看>>
windows7怎么设置并链接“L2TP ***”
查看>>
大学学生会的腐败怪象
查看>>
LAMP平台详述
查看>>
我的友情链接
查看>>