CF-1200D White Lines(前缀和来两发么小老弟?)
传送门: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(前缀和来两发么小老弟?)相关推荐
- 两款在线小游戏-e梦迷宫、恐龙跳一跳
简介: 一共两款在线小游戏-e梦迷宫.恐龙跳一跳 都是有趣的html小游戏源码 大多数完美的网站也都会有一个有趣404页面,所以这两款都可以做成404有趣的404页面哈 网盘下载地址: http:// ...
- 两个必备小本领——恢复设备出厂配置、如何配置web方式登陆交换机
转载来源 :两个必备小本领--恢复设备出厂配置.如何配置web方式登陆交换机 :https://mp.weixin.qq.com/s/35EOLUODM8G15C-xXVcVCw 恢复设备出厂配置 1 ...
- PDF转图片怎么转?分享两种转换小技巧
如何将PDF文件内容转换成图片呢?PDF文件在办公过程中十分常见,很多时候我们为了能更加方便的使用文件中的内容,会需要把PDF转换成图片来保存使用,因为图片格式的文件更加容易阅读和携带.很多小伙伴不知 ...
- php 公众号打开小程序,微信公众号图文消息新增两种进入小程序的方式
终于不再是凌晨--就在刚刚,微信宣布小程序的能力再次升级.除了添加小程序卡片外,公众号图文消息新增两种进入小程序的方式:支持通过蓝色文字链接或图片链接跳转到小程序. 1.推送形式更多样 公众号运营者在 ...
- 怎么把PDF转换成CAD文件呢?分享两种转换小技巧
PDF文件怎么把它转换成CAD文件呢?做CAD设计的小伙伴是不是经常会收到甲方发来的PDF格式的CAD文件?他们会觉得PDF格式好发送,容易打开,但我们作为专业编辑.绘制CAD图纸人员,是要对文件进行 ...
- 万两手机阅读小助手的下载安装及一键签到多个app的方法。
大家好,今天给大家分享一下市面上使用者比较多的 万两手机阅读小助手 的安装 这里介绍的是阅读小助手 1.3.4 版本的安装方法. 像普通app一样,下载好apk后直接安装即可.安装好的图片如下: 安装 ...
- 分享两个下载小助手给你
分享两个下载小助手给你 在日常生活和学习中,我们经常需要下载各种视频和图片资源.有些资源可能只能通过收费的途径进行下载,而有些则可能存在版权问题或者下载速度较慢等问题.因此,为了更好地获取所需资源并提 ...
- 如何实现两个微信小程序之间的切换跳转
如何实现两个微信小程序之间的切换跳转 wx.navigateToMiniProgram({appId: '***************', //跳转目标小程序的appIdpath: '/pages/ ...
- java两个字符串前缀_java – 找到两个字符串的最长公共前缀
我想找到两个字符串的最长公共前缀. 有没有办法循环我的最后几个if语句,以便我可以结束彼此不匹配的最后几个字符? System.out.println("Enter the first st ...
最新文章
- 简述sed、grep和parted的速查表
- 在耗时操作结束之前 销毁tableView 如何让tableViewCell 销毁
- 政务数据放开在即 政策红利下大数据投资亮点凸显
- html text报错,AFNetWorking 请求报错 text/html
- 中国半导体材料市场投资潜力与发展动态研究报告2022版
- ups容量计算和配置方法_干货 | ups的空开、电缆及电池的配置计算
- angular移除事件绑定事件绑定_Vue.js子组件利用事件向父组件传输数据,以及sync修饰符和双向绑定...
- bat产品经理能力模型_浅析产品经理能力模型
- C程序设计语言现代方法08:数组
- android通过代码设置铃声_iOS、Android数据传输管理工具
- 详解二叉树的递归遍历与非递归遍历——(二)
- ubuntu中网易云音乐图标打不开应用的问题
- k8s [kubelet-check] Initial timeout of 40s passed.解决方案
- python if嵌套/while嵌套/竞技叠杯
- 程序员的这些前五大无奈,你占了多少?
- 车牌识别OCr技术,汽车后市场服务
- html5绘制圣诞树,【Html5】JavaScript和html5实现3D圣诞树的代码
- html感叹号图形代码,canvas3:绘制感叹号
- 下列选项中、不是python语言保留字的是_以下选项中,不是Python语言保留字的是:()...
- ubuntu 安装usb免驱无线网卡TP-LINK WN726N