当前位置: 首页 > news >正文

P4147 玉蟾宫(最大子矩形)

思路

可以利用悬线法,处理对于每个点在高度为 \(h\) 时的左右边界,然后随着高度增加,这个边界表示的范围一定是单调不增的,但是高度又在增加,所以一直取 \(max\) 就对了

最后注意输出答案的三倍
\(C++\) \(AC\) \(Code:\)

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e3 + 5;
int l[MAXN][MAXN], r[MAXN][MAXN], h[MAXN][MAXN]; //分别存放位于点 (i, j) 时的高度为 h 的 左右边界
char mapp[MAXN][MAXN];
int n, m;
void init() {for (int i = 1; i <= n; ++i)for (int j = 1; j <= m; ++j)l[i][j] = r[i][j] = j, h[i][j] = 1; // 初始化边界为自身,高度为1
}
int main() {cin >> n >> m;for (int i = 1; i <= n; ++i)for (int j = 1; j <= m; ++j)cin >> mapp[i][j];init();for (int i = 1; i <= n; ++i) {for (int j = 2; j <= m; ++j)if (mapp[i][j] == 'F' && mapp[i][j - 1] == 'F')l[i][j] = l[i][j - 1]; // 尝试向左扩展边界for (int j = m - 1; j >= 1; --j)if (mapp[i][j] == 'F' && mapp[i][j + 1] == 'F')r[i][j] = r[i][j + 1]; // 尝试向右扩展边界}int ans = 0;for (int i = 1; i <= n; ++i)for (int j = 1; j <= m; ++j) {if (mapp[i][j] == 'R')continue;if(mapp[i - 1][j] == 'F') { // 更新高度增加时的左右边界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]); // 求面积最大值}cout << ans * 3;return 0;
}
http://www.gsyq.cn/news/19273.html

相关文章:

  • 【实录】应用 Verdaccio 从零搭建私有 npm 仓库(含完整步骤及避坑指南)
  • 2025 年 10 月西安房屋鉴定公司最新推荐排行榜:覆盖房屋安全评估、结构检测、承载力鉴定、危房鉴定领域,助您选专业机构
  • GESP C++5级 2025年6月编程2题解:最大公因数 - 教程
  • 阿里发布「夸克 AI 眼镜」:融合阿里购物、地图、支付生态;苹果拟收购计算机视觉初创 Prompt AI丨日报
  • 在AI技术唾手可得的时代,挖掘新需求成为制胜关键——某知名AI聊天框架需求探索
  • 数论学习之路
  • 详细介绍:C# WinForms的入门级画板实现
  • 【汇编】汇编语言运行过程
  • 电感式传感器 - 实践
  • 云栖2025 | 阿里云自研大素材平台 ODPS 重磅升级:全面支持AI计算和服务
  • CSP-J/S2024第二轮提高级题目知识构成分析报告
  • 浅层 CNN 的瓶颈:用 LeNet 实测不同数据集
  • 对抗训练提升产品搜索技术解析
  • Ubuntu Linux双网口主机实现在校园网环境下的网络共享
  • Ubuntu Linux双网卡实现在校园网环境下的网络共享
  • 台式机主板上的电池要更换啦
  • 微信小程序 app.js中onLaunch中方法执行完毕后再执行index首页数据请求
  • 轻量服务器Lighthouse + 1Panel 部署.NET 8 Web应用
  • 关于近期调研各类游戏开发引擎的一些感想
  • 终于在vim中用上了molokai的炫酷色彩配置了(゚∀゚)
  • 我是如何在Vim8.1中安装好的NERDTree插件的
  • P12012 [Ynoi April Fools Round 2025] 牢爱 题解
  • 10.11总结
  • CF691E Xor-sequences
  • 分析InfluxDB中读取时CPU飙升
  • 高二停课周记(信息学竞赛) Week1
  • 2025/10/11
  • 十年运维工程师总结
  • 运动控制教学——5分钟学会Dijkstra与A*搜索算法!(附仿真视频及代码) - 教程
  • CNN 发展历程