直接枚举每个点作为左上角是可以做的,但是写起来较麻烦

有一种较为简单的做法是对一列或一行统计贡献

比如某一行的B存在的区间是L,R那么就有三种情况

  1.没有这样的区间,即一行都是W,此时这行对答案的贡献一直是1

  2.R-L+1<=k,那么这一段必须要找一个点代表的矩形来覆盖,可以求出这样的点的存在区间是一个矩形,当且仅当点在这个矩形范围内时,这一行会有1的贡献、

  3.R-L+1>k,永远不会有贡献

对于情况2,我们用二维的差分来统计一下,最后枚举每个点,看我们选择这个点代表的矩形时,贡献是否达到最大就行

#include<bits/stdc++.h>
using namespace std;
#define N 2005
char mp[N][N];
int n,k,tot,l[N],r[N],u[N],d[N],cnt[N][N];
int main(){
cin>>n>>k;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("\n%c",&mp[i][j]); memset(l,0x3f,sizeof l);
memset(u,0x3f,sizeof u);
for(int i=;i<=n;i++){
for(int j=;j<=n;j++)
if(mp[i][j]=='B')
l[i]=min(l[i],j),r[i]=max(r[i],j);
if(l[i]==0x3f3f3f3f)
tot++;
else if(r[i]-l[i]+<=k){
int x1=max(,i-k+),y1=max(,r[i]-k+);
int x2=i,y2=l[i];
cnt[x1][y1]++;cnt[x1][y2+]--;
cnt[x2+][y1]--;cnt[x2+][y2+]++;
}
}
for(int j=;j<=n;j++){
for(int i=;i<=n;i++)
if(mp[i][j]=='B')
u[j]=min(u[j],i),d[j]=max(d[j],i);
if(u[j]==0x3f3f3f3f)
tot++;
else if(d[j]-u[j]+<=k){
int x1=max(,d[j]-k+),y1=max(,j-k+);
int x2=u[j],y2=j;
cnt[x1][y1]++;cnt[x1][y2+]--;
cnt[x2+][y1]--;cnt[x2+][y2+]++;
}
} int ans=;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
cnt[i][j]+=cnt[i-][j]+cnt[i][j-]-cnt[i-][j-];
ans=max(ans,cnt[i][j]);
}
cout<<ans+tot<<endl; }

最新文章

  1. Thinking in java学习笔记之interface
  2. Python里*arg 和**kwargs的作用
  3. yield
  4. 基于redis分布式锁实现“秒杀”
  5. HDU 4758 Walk Through Squares(AC自动机+DP)
  6. 在Ubuntu Trusty 14.04 (LTS) (64-bit)安装Docker
  7. cordova -v 报错,必须用sodu cordova -v
  8. deepin linux安装与配置
  9. $(function(){})里面不能声明定义函数
  10. YARN应用程序开发流程(类似于MapReduce On Yarn)本内容版权归(小象学院所有)
  11. jQuery回到顶部
  12. ES6 学习笔记之二 块作用域与闭包
  13. Cocos2D中屏幕分辨率解释
  14. hadoop 部署和调优
  15. Linux 系统命令行入门基础
  16. ssh-keygen 命令
  17. scanf 输入加逗号(或者不加逗号)出现的异常及解决方案
  18. PC上对限制在微信客户端访问的html页面进行调试
  19. go字符串转换
  20. 怎么用ChemDraw加反应条件

热门文章

  1. JAVA 输入输出程序开发
  2. 使用JAVA如何对图片进行格式检查以及安全检查处理
  3. centos7 安装PHP5.3 报错undefined reference to symbol &#39;__gxx_personality_v0@@CXXABI_1.3&#39;
  4. 数据库的显示、创建、使用 、用户授权管理及忘记root用户后重置密码
  5. VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试
  6. nginx -stream(tcp连接)反向代理配置 实现代理mysql以及文件上传
  7. vue mock数据(模拟后台)
  8. Module not found: Error: Can&#39;t resolve &#39;@babel/runtime/helpers/classCallCheck&#39; and Module not found: Error: Can&#39;t resolve &#39;@babel/runtime/helpers/defineProperty&#39;
  9. Tomcat启动脚本(3)setclasspath.bat
  10. Javascript基础二(程序的三大结构)