博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BZOJ] 3039: 玉蟾宫
阅读量:6655 次
发布时间:2019-06-25

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

预处理每个点向左向右向上延伸的最长距离即可

实现上注意矩形的约束条件,也就是取min的过程

#include
#include
using namespace std;const int MAXN = 1005;int n,m;int a[MAXN][MAXN];int h[MAXN][MAXN],l[MAXN][MAXN],r[MAXN][MAXN];int main(){ cin>>n>>m; char c; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>c; if(c=='F')a[i][j]=1; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(!a[i][j])continue; h[i][j]=1;l[i][j]=1; if(a[i-1][j])h[i][j]+=h[i-1][j]; if(a[i][j-1])l[i][j]+=l[i][j-1]; } for(int j=m;j>=1;j--){ if(!a[i][j])continue; r[i][j]=1; if(a[i][j+1])r[i][j]+=r[i][j+1]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(h[i][j]<=1)continue; l[i][j]=min(l[i][j],l[i-1][j]); r[i][j]=min(r[i][j],r[i-1][j]); } } int ans=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ ans=max(ans,h[i][j]*(r[i][j]+l[i][j]-1)); } } cout<<3*ans; return 0;}

转载于:https://www.cnblogs.com/ghostcai/p/9771055.html

你可能感兴趣的文章
【C/C++】:用C实现输出日期的阴历日子
查看>>
[ES6] Proxy & Reflect
查看>>
关于Go,你可能不注意的7件事
查看>>
使用 ASP.NET 一般处理程序或 WebService 返回 JSON
查看>>
error
查看>>
多线程上下文切换
查看>>
Request 传值 遇到的中文乱码问题
查看>>
Drupal 7.31 SQL注入漏洞利用具体解释及EXP
查看>>
数据结构---树---总结
查看>>
flume介绍与原理(一)
查看>>
WebStorm 10.0.3安装
查看>>
Oracle 查找带有CLOB字段的所有表
查看>>
一键部署WordPress开源内容管理系统
查看>>
实现Repeater控件的记录单选
查看>>
MySQL定义和变量赋值
查看>>
O(n)获得中位数及获得第K小(大)的数
查看>>
windows下 管理员身份启动java进程
查看>>
excel 分类汇总函数
查看>>
Web安全之XSS攻击与防御小结
查看>>
一个简单的图片懒加载
查看>>