White Lines
主要思路就是利用差分
对于行:如果在某一个点上,向右下角涂掉 k*k 的矩形能够使得新出现一行 “B” 那么就在这个点上 +1(这里的加 +1 需要利用差分来完成)
列同理,如果有现成的空白行,记录一下即可,最后直接加上
代码:
// Created by CAD on 2019/8/12.
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
char g[2005][2005];
int a[2005][2005];
int b[2005][2005];
void dif(int x1,int y1,int x2,int y2)
{
a[x1][y1]++,a[x2][y2]++;
a[x1][y2]--,a[x2][y1]--;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n,k;cin>>n>>k;
int ok=0;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
cin>>g[i][j];
for(int i=1;i<=n;++i)
{
int maxn=0,minn=0;
for(int j=1;j<=n;++j)
{
if(g[i][j]=='B')
{
maxn=j;
if(!minn)
minn=j;
}
}
if(minn==0) ok++;
else if(maxn-minn+1<=k)
dif(max(0,i-k)+1,max(0,maxn-k)+1,i+1,minn+1);
}
for(int j=1;j<=n;++j)
{
int maxn=0,minn=0;
for(int i=1;i<=n;++i)
{
if(g[i][j]=='B')
{
maxn=i;
if(!minn) minn=i;
}
}
if(minn==0) ok++;
else if(maxn-minn+1<=k) dif(max(0,maxn-k)+1,max(0,j-k)+1,minn+1,j+1);
}
ll ans=0;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
a[i][j]+=a[i-1][j]+a[i][j-1]-a[i-1][j-1];
ans=max(ans,1ll*a[i][j]+ok);
}
}
cout<<ans<<endl;
return 0;
}
White Lines的更多相关文章
- CodeForces 1200D White Lines
cf题面 Time limit 1500 ms Memory limit 262144 kB 解题思路 官方题解 1200D - White Lines Let's consider a single ...
- D. White Lines
D. White Lines 给定一个$n\times n$的$WB$矩阵,给定一个$k*k$的能把$B$变成$W$的橡皮擦,求橡皮擦作用一次后,全为$W$的行.列总数最大值 前缀和差分 #inclu ...
- CF1200D White Lines | 前缀和
传送门 Examples input 1 4 2 BWWW WBBW WBBW WWWB output 1 4 input 2 3 1 BWB WWB BWB output 2 2 input 3 5 ...
- codeforce D. White Lines
二维前缀和 给你一个n*n的矩阵,里面有两种字符,‘W’和‘B’,代表black 和white .其实这个矩阵就是一个方形画板,你有一个k*k的橡皮只能用一次,使k*k的矩阵里的B变成W,问完全空白的 ...
- CF1200D 【White Lines】
退役快一年了之后又打了场紧张刺激的$CF$(斜眼笑) 然后发现$D$题和题解里的大众做法不太一样 (思路清奇) 题意不再赘述,我们可以看到这个题~~好做~~在只有一次擦除机会,尝试以此为突破口解决问题 ...
- cf1200 D White Lines(二维差分)
题目大意 有一个大小为n的矩阵,每个1*1的单位为黑或白,我们可以用一个(只有一个)大小为k*k的白色矩阵覆盖,问:最多的时候有几条白线(横的全为白 或竖的全为白 即为白线). 思路 要想把一条线(以 ...
- PHP7函数大全(4553个函数)
转载来自: http://www.infocool.net/kb/PHP/201607/168683.html a 函数 说明 abs 绝对值 acos 反余弦 acosh 反双曲余弦 addcsla ...
- Xamarin Studio在Mac环境下的配置和Xamarin.iOS常用控件的示例
看过好多帖子都是Win环境装XS,Mac只是个模拟器,讲解在Mac环境下如何配置Xamarin Studio很少,也是一点点找资料,东拼西凑才把Xamarin Studio装在Mac上跑起来,如下: ...
- Total Commander 8.52 Beta 1
Total Commander 8.52 Beta 1http://www.ghisler.com/852_b1.php 10.08.15 Release Total Commander 8.52 b ...
随机推荐
- python中argparse模块简单使用
python中argparse模块简单使用 简介 argparse是python用于解析命令行参数和选项的标准模块.argparse模块的作用是用于解析命令行参数. 使用步骤 1.首先导入该模块 2. ...
- spark教程(11)-sparkSQL 数据抽象
数据抽象 sparkSQL 的数据抽象是 DataFrame,df 相当于表格,它的每一行是一条信息,形成了一个 Row Row 它是 sparkSQL 的一个抽象,用于表示一行数据,从表现形式上看, ...
- 福建工程学院第十四届ACM校赛G题题解
外传:编剧说了不玩游戏不行 题意: 有n个石堆,我每次只能从某一堆中取偶数个石子,你取奇数个,我先手,先不能操作的人输.问最后谁能赢. 思路: 这个题仔细想想,就发现,取奇数的人有巨大的优势,因为假设 ...
- mysql update join
随手记录一下 UPDATE information f1 LEFT JOIN topic f2 ON f1.id = f2.id SET f1.img_url = f2.img_url
- spring boot 发布自动生成svn版本号
通过Jenkins构建发布spring boot项目时,常常有需求,需要把Svn的版本号更新到项目的版本上,通过有两种解决方案: 1. 通过shell命令对配置文件中的指定字符进行替换, 如: 配置文 ...
- [转载]十六进制数的两种不同表示:0x和H
来源:https://blog.csdn.net/u013773644/article/details/519811860x是16进制的前缀,H是16进制的后缀 都是表示十六进制数,意义上没有什么区别 ...
- javascript--获取一个页面各个标签的数量
获取一个页面各个标签的数量 document.getElementsByTagName('*')--获取所有的标签. var obj = document.getElementsByTagName(' ...
- Delphi 有类型文件
- Object Pascal异常的种类
- linux内核配置与编译
配置内核:配置硬件和软件需的部分. make config:基于文本模式的交互式配置.(一问一答) make menuconfig:基于文本模式菜单性配置.(直观简单高效) <*>会产生b ...