前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【题解】玉蟾宫

【题解】玉蟾宫

作者头像
fishhh
发布2022-08-31 14:56:04
2410
发布2022-08-31 14:56:04
举报
文章被收录于专栏:OI算法学习笔记OI算法学习笔记

题目背景

有一天,小猫 rainbow 和 freda 来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。

题目描述

这片土地被分成 N×M个格子,每个格子里写着 ‘R’ 或者 ‘F’,R 代表这块土地被赐予了 rainbow,F 代表这块土地被赐予了 freda。

现在 freda 要在这里卖萌。。。它要找一块矩形土地,要求这片土地都标着 ‘F’ 并且面积最大。

但是 rainbow 和 freda 的 OI 水平都弱爆了,找不出这块土地,而蓝兔也想看 freda 卖萌(她显然是不会编程的……),所以它们决定,如果你找到的土地面积为 S,它们每人给你 S 两银子。

输入格式

第一行两个整数 N,M,表示矩形土地有 N 行 M 列。

接下来 N 行,每行 M 个用空格隔开的字符 ‘F’ 或 ‘R’,描述了矩形土地。

输出格式

输出一个整数,表示你能得到多少银子,即 (3×最大 ’F’ 矩形土地面积)的值。

输入输出样例

输入 #1

代码语言:javascript
复制
5 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 F

输出 #1

代码语言:javascript
复制
45

说明/提示

题目分析

可发现题目要我们求的是满足条件的最大子矩阵。这类问题可以采用悬线法进行处理。

需要满足的条件则是区域由F组成。

up[x][y] 为从(x,y)位置向上符合条件的最长线段长度,即悬线长度。

L[x][y]为从(x,y) 位置向左,悬线能平移的最长距离。

R[x][y]为从(x,y) 位置向右,悬线能平移的最长距离。

子矩阵面积为

当利用悬线法求出最大子矩阵面积后,将面积乘3即最终答案。

代码实现

代码语言:javascript
复制
#include <iostream>
#include <cstdio>
using namespace std;
const int N=1e3+5;
int up[N][N],L[N][N],R[N][N];
/*
up[x][y] 从(x,y)开始,向上连续F的最大长度
L[x][y] 从(x,y)开始,向左连续F的最大长度
R[x][y] 从(x,y)开始,向右连续F的最大长度
*/
int a[N][N];
int n,m;
int main(){
	char c;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>c;
			a[i][j]=(c=='F')?1:0;
			if(a[i][j]){//当(x,y)满足条件
				up[i][j]=up[i-1][j]+1;//更新悬线
				L[i][j]=L[i][j-1]+1;//更新从(i,j)向左的满足条件的最长长度
			}
		}
		for(int j=m;j>=1;j--){
			if(a[i][j]) R[i][j]=R[i][j+1]+1;//更新从(i,j)向右的满足条件的最长长度
		}
	}
	/*
		更新 L[][] 和 R[][] 为 从(x,y)想左/右的最大悬线平移距离
		L[i][j]=min(L[i][j],L[i-1][j])
		R[i][j]=min(R[i][j],LR[i-1][j])
	*/
	int maxs=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(i>=2&&a[i][j]&&a[i-1][j]){
				L[i][j]=min(L[i][j],L[i-1][j]);
				R[i][j]=min(R[i][j],R[i-1][j]);
			}
			maxs=max(maxs,up[i][j]*(L[i][j]+R[i][j]-1));//更新最大子矩阵面积
		}
	}
	cout<<3*maxs;
	return 0;
}

Q.E.D.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目背景
  • 题目描述
  • 输入格式
  • 输出格式
  • 输入输出样例
  • 说明/提示
  • 题目分析
  • 代码实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档