传送门:http://codeforces.com/problemset/problem/1200/D

思路:把橡皮檫看成n条竖线和n条横线的集合。一次前缀和 R 统计单行的黑点数,那么用(R[i][j+k-1]-R[i][j-1]==R[i][n])就可以判断以(i,j)为起点、长为k的横布条能否制造出一条白线。二次前缀和 SR[i][j] 统计前i行以j为起点放置的横布条可以制造的白线数。列同理。最终统计行列白线的总数。

#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=2010;
int n,k,ans=0,sum=0;
char a[maxn][maxn];
int c[maxn][maxn],r[maxn][maxn];
int sc[maxn][maxn],sr[maxn][maxn];
int main()
{scanf("%d%d",&n,&k);for(int i=1;i<=n;i++) scanf("%s",a[i]);//一次前缀和for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){c[i][j]=c[i-1][j]+(a[i][j-1]=='B');r[i][j]=r[i][j-1]+(a[i][j-1]=='B');}//二次前缀和for(int i=1;i<=n-k+1;i++)for(int j=1;j<=n;j++)sc[i][j]=sc[i][j-1]+(c[n][j]&&c[i+k-1][j]-c[i-1][j]==c[n][j]);for(int i=0;i<=n;i++)for(int j=1;j<=n-k+1;j++)sr[i][j]=sr[i-1][j]+(r[i][n]&&r[i][j+k-1]-r[i][j-1]==r[i][n]);//统计原有白线for(int i=1;i<=n;i++)sum+=(c[n][i]==0)+(r[i][n]==0);//枚举橡皮擦起点for(int i=1;i<=n-k+1;i++)for(int j=1;j<=n-k+1;j++)ans=max(ans,(sr[i+k-1][j]-sr[i-1][j])+(sc[i][j+k-1]-sc[i][j-1])+sum);cout<<ans<<endl;return 0;
}

CF-1200D White Lines(前缀和来两发么小老弟?)相关推荐

  1. 两款在线小游戏-e梦迷宫、恐龙跳一跳

    简介: 一共两款在线小游戏-e梦迷宫.恐龙跳一跳 都是有趣的html小游戏源码 大多数完美的网站也都会有一个有趣404页面,所以这两款都可以做成404有趣的404页面哈 网盘下载地址: http:// ...

  2. 两个必备小本领——恢复设备出厂配置、如何配置web方式登陆交换机

    转载来源 :两个必备小本领--恢复设备出厂配置.如何配置web方式登陆交换机 :https://mp.weixin.qq.com/s/35EOLUODM8G15C-xXVcVCw 恢复设备出厂配置 1 ...

  3. PDF转图片怎么转?分享两种转换小技巧

    如何将PDF文件内容转换成图片呢?PDF文件在办公过程中十分常见,很多时候我们为了能更加方便的使用文件中的内容,会需要把PDF转换成图片来保存使用,因为图片格式的文件更加容易阅读和携带.很多小伙伴不知 ...

  4. php 公众号打开小程序,微信公众号图文消息新增两种进入小程序的方式

    终于不再是凌晨--就在刚刚,微信宣布小程序的能力再次升级.除了添加小程序卡片外,公众号图文消息新增两种进入小程序的方式:支持通过蓝色文字链接或图片链接跳转到小程序. 1.推送形式更多样 公众号运营者在 ...

  5. 怎么把PDF转换成CAD文件呢?分享两种转换小技巧

    PDF文件怎么把它转换成CAD文件呢?做CAD设计的小伙伴是不是经常会收到甲方发来的PDF格式的CAD文件?他们会觉得PDF格式好发送,容易打开,但我们作为专业编辑.绘制CAD图纸人员,是要对文件进行 ...

  6. 万两手机阅读小助手的下载安装及一键签到多个app的方法。

    大家好,今天给大家分享一下市面上使用者比较多的 万两手机阅读小助手 的安装 这里介绍的是阅读小助手 1.3.4 版本的安装方法. 像普通app一样,下载好apk后直接安装即可.安装好的图片如下: 安装 ...

  7. 分享两个下载小助手给你

    分享两个下载小助手给你 在日常生活和学习中,我们经常需要下载各种视频和图片资源.有些资源可能只能通过收费的途径进行下载,而有些则可能存在版权问题或者下载速度较慢等问题.因此,为了更好地获取所需资源并提 ...

  8. 如何实现两个微信小程序之间的切换跳转

    如何实现两个微信小程序之间的切换跳转 wx.navigateToMiniProgram({appId: '***************', //跳转目标小程序的appIdpath: '/pages/ ...

  9. java两个字符串前缀_java – 找到两个字符串的最长公共前缀

    我想找到两个字符串的最长公共前缀. 有没有办法循环我的最后几个if语句,以便我可以结束彼此不匹配的最后几个字符? System.out.println("Enter the first st ...

最新文章

  1. 简述sed、grep和parted的速查表
  2. 在耗时操作结束之前 销毁tableView 如何让tableViewCell 销毁
  3. 政务数据放开在即 政策红利下大数据投资亮点凸显
  4. html text报错,AFNetWorking 请求报错 text/html
  5. 中国半导体材料市场投资潜力与发展动态研究报告2022版
  6. ups容量计算和配置方法_干货 | ups的空开、电缆及电池的配置计算
  7. angular移除事件绑定事件绑定_Vue.js子组件利用事件向父组件传输数据,以及sync修饰符和双向绑定...
  8. bat产品经理能力模型_浅析产品经理能力模型
  9. C程序设计语言现代方法08:数组
  10. android通过代码设置铃声_iOS、Android数据传输管理工具
  11. 详解二叉树的递归遍历与非递归遍历——(二)
  12. ubuntu中网易云音乐图标打不开应用的问题
  13. k8s [kubelet-check] Initial timeout of 40s passed.解决方案
  14. python if嵌套/while嵌套/竞技叠杯
  15. 程序员的这些前五大无奈,你占了多少?
  16. 车牌识别OCr技术,汽车后市场服务
  17. html5绘制圣诞树,【Html5】JavaScript和html5实现3D圣诞树的代码
  18. html感叹号图形代码,canvas3:绘制感叹号
  19. 下列选项中、不是python语言保留字的是_以下选项中,不是Python语言保留字的是:()...
  20. ubuntu 安装usb免驱无线网卡TP-LINK WN726N

热门文章

  1. 微信小程序转码机器人搭建方法,可爱猫,vml机器人插件
  2. 公司被收购以后,我怎么办?
  3. JSP 【基础】连接数据库的登录及验证
  4. Web Service的使用
  5. 埃森哲java笔试_【埃森哲Java面试】埃森哲java面试-看准网
  6. 图书管理系统 数据库实现(oracle)
  7. 实施配置 b/s 架构 webERP
  8. 奶爸日记7 - 新手第一次开车上路
  9. 自动驾驶仿真工具之AirSim简介
  10. 关于钢材出口关税的问题