题目大意:

有一个矩阵 有些点可以取有些不能

求以每个点为右下角的子矩阵(里面点都可以取)的周长最大值

最后统计出每个周长对应矩阵的个数

思路:

单调栈

先预处理出每个点向上最多能延伸多长记为h(i,j)

然后对于每行维护一个单调栈记录每行最远可以达到的左端点和该矩形的高

该单调栈满足高单调递增

每次加入一个元素时,判断新增加的高度是否比减去的长度多

若是,就加入栈,反之不入栈

 #include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<queue>
#include<vector>
#define ll long long
#define inf 2147483611
#define MAXN 1010
#define MOD
using namespace std;
inline int read()
{
int x=,f=;
char ch;ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-;ch=getchar();}
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
return x*f;
}
int pos,top,T,n,m,ans[MAXN*],h[MAXN][MAXN];
char map[MAXN];
struct data
{
int x,y;
}s[MAXN];
int main()
{
T=read();
while(T--)
{
n=read(),m=read();
memset(h,,sizeof(h));
memset(ans,,sizeof(ans));
for(int i=;i<=n;i++)
{
scanf("%s",map+);
for(int j=;j<=m;j++)
if(map[j]=='.') h[i][j]=h[i-][j]+;
}
for(int i=;i<=n;i++)
{
memset(s,,sizeof(s));top=;
for(int j=;j<=m;j++)
{
pos=j;
while(top&&s[top].y>=h[i][j]) {pos=s[top].x;top--;}
if(!h[i][j]) continue;
if(!top||h[i][j]-s[top].y>pos-s[top].x)
{
ans[h[i][j]+j-pos+]++;
data tmp;tmp.x=pos,tmp.y=h[i][j];
s[++top]=tmp;
}
else ans[s[top].y+j-s[top].x+]++;
}
}
for(int i=;i<=n+m;i++)
{
if(ans[i]) printf("%d x %d\n",ans[i],i*);
}
}
}

最新文章

  1. 关于Ruby常用语法案例累积
  2. MainWindow、QWidget和QDialog的区别和选择(转载)
  3. 2287: 【POJ Challenge】消失之物
  4. Sublime Text2 新建文件快速生成Html头部信息和炫酷的代码补全
  5. 传智168期JavaEE就业班 day01-html
  6. matlab 解方程组
  7. Android - 禁止Gridview滚动
  8. VS2010性能监视工具
  9. CSS3秘笈第三版涵盖HTML5学习笔记1~5章
  10. 修复ecshop商品重量BUG小数位增至五位
  11. NodeJS学习笔记—2.AMD规范
  12. 今天愉快的hack小记
  13. 封装OkHttp,通过Callback改造Callback实现
  14. 极光开发者服务推出统计产品JAnalytics
  15. Ubuntu18.04下配置Nginx+RTMP服务器,实现点播/直播/录制功能
  16. SQL语句利用日志写shell
  17. python打包--pyinstaller打包报错
  18. declare -A color
  19. 八款开源 Android 游戏引擎 (巨好的资源)
  20. 【LeetCode】216. Combination Sum III

热门文章

  1. 树莓派 - wiringPi
  2. 79-Envelopes,包络指标.(2015.7.1)
  3. Shader Wave
  4. java获取类的全类名----类名.class.getName()的作用是获取这个类的全类名
  5. HDU 2647 逆向拓扑排序
  6. HDU 4416 (后缀自动机)
  7. HDU 2222 (AC自动机)
  8. Model、ModelMap、ModelAndView的使用和区别
  9. 详细图解mongodb 3.4.1 win7x64安装
  10. 踩坑录-IDEA编辑器:找不到TomcatService或ApplicationServers----TomcatService使用指南