[Agc081F/At2699]

给出一个拥有 \(H\times W\) 个格子的棋盘,每个格子的颜色为黑色或白色。 Snuke 可以进行任意次下列操作:

选择棋盘中的一行或一列,将这一行或一列的颜色翻转(黑变成白,白变成黑) Snuke 想知道,在他进行操作后,棋盘中最大的全黑矩形最大能为多少。

考虑 \(2\times 2\) 方格,当且仅当偶数个黑时,可以做成全黑

大矩形能做成全黑,当且仅当所有 \(2\times 2\) 子格都是偶数个黑

然后就是一个很朴素的单调栈求最大矩形了

注意到答案最小为\(max(n,m)\),所以最后要处理一下

我大概是菜的连单调栈维护矩形都不会写了

#include <bits/stdc++.h>
using namespace std; int h[2005],a[2005][2005],b[2005][2005],f[2005],p[2005],r,n,m,ans;
char c[2005][2005]; int main() {
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) {
scanf("%s",c[i]+1);
for(int j=1;j<=m;j++) {
b[i][j] = c[i][j]=='#'?1:0;
}
}
for(int i=1;i<n;i++) {
for(int j=1;j<m;j++) {
if((b[i][j]+b[i+1][j]+b[i][j+1]+b[i+1][j+1])%2==0) {
a[i][j]=1;
}
}
}
for(int i=1;i<m;i++) h[i]=0;
for(int i=1;i<n;i++) {
for(int j=1;j<m;j++) {
if(a[i][j]) h[j]++;
else h[j]=0;
}
memset(f,0,sizeof f);
memset(p,0,sizeof p);
r=0;
for(int j=1;j<=m;j++) {
while(r && f[r] >= h[j]) {
ans=max(ans, (j-p[r-1])*(f[r]+1));
--r;
}
f[++r] = h[j];
p[r] = j;
//ans=max(ans, (j-p[1]+2)*(f[1]+1));
}
//while(r) if(i-h[p[r]]+1) ans=max(ans, (m-p[r]+1)*(f[r]+1)), r--;
//if(r) cout<<(m-p[1]+1)<<" "<<(f[1]+1)<<endl;
}
cout<<max(ans,max(n,m))<<endl;
}

最新文章

  1. spring事务概念理解
  2. 项目中遇到的关于兄弟controller之间传值的问题解决
  3. pthread 学习
  4. linux分享六:字符串处理
  5. 用Unity开发HTC VIVE——移动漫游篇
  6. windows上自动设置java环境变量的脚本
  7. iOS开发----三目运算符
  8. kindEditort图片自动上传
  9. WPF之旅(二)- XAML
  10. Delphi动态事件深入分析(对象方法在调用的时候会传递一个隐含的Self指针,而该指针的值在EAX中。即左边第一个参数)
  11. 剑指Offer20 栈的压入弹出序列是否正确
  12. Mahout快速入门教程
  13. python中发送get或post请求
  14. Linux下Apache重启遇到No space left on device错误的解决方法
  15. gdb学习(一)[第二版]
  16. Vue.js实现登录功能
  17. Java 8 新特性-菜鸟教程 (8) -Java 8 日期时间 API
  18. UI基础五:简单的OP组件POPUP搜索帮助
  19. python day10作业答案
  20. 电脑不能上网win7 解决办法

热门文章

  1. GitLab Runner
  2. 【公告】Hello World!
  3. 2020年如何成为一个高级AVA架构师(50W~100W年薪)
  4. Kubernetes 部署 Nebula 图数据库集群
  5. 6.python设置代理和添加镜像源介绍
  6. #《Essential C++》读书笔记# 第五章 面向对象编程风格
  7. Linux学习Day1:开班第一天
  8. C语言再学习part2-重新认识C语言词汇
  9. PHP0020:PHP 单文件上传 多文件上传
  10. [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)