E. Bear and Square Grid

题目连接:

http://www.codeforces.com/contest/680/problem/E

Description

You have a grid with n rows and n columns. Each cell is either empty (denoted by '.') or blocked (denoted by 'X').

Two empty cells are directly connected if they share a side. Two cells (r1, c1) (located in the row r1 and column c1) and (r2, c2) are connected if there exists a sequence of empty cells that starts with (r1, c1), finishes with (r2, c2), and any two consecutive cells in this sequence are directly connected. A connected component is a set of empty cells such that any two cells in the component are connected, and there is no cell in this set that is connected to some cell not in this set.

Your friend Limak is a big grizzly bear. He is able to destroy any obstacles in some range. More precisely, you can choose a square of size k × k in the grid and Limak will transform all blocked cells there to empty ones. However, you can ask Limak to help only once.

The chosen square must be completely inside the grid. It's possible that Limak won't change anything because all cells are empty anyway.

You like big connected components. After Limak helps you, what is the maximum possible size of the biggest connected component in the grid?

Input

The first line of the input contains two integers n and k (1 ≤ k ≤ n ≤ 500) — the size of the grid and Limak's range, respectively.

Each of the next n lines contains a string with n characters, denoting the i-th row of the grid. Each character is '.' or 'X', denoting an empty cell or a blocked one, respectively.

Output

Print the maximum possible size (the number of cells) of the biggest connected component, after using Limak's help.

Sample Input

5 2

..XXX

XX.XX

X.XXX

X...X

XXXX.

Sample Output

10

Hint

题意

给你n*n的矩阵,你有一个k*k的框框,可以把矩阵的某一块给框起来

然后这个框框内的所有格子都是.了,现在你需要使得这个矩阵的连通块最大,那么这个连通块的大小是多少呢?

题解:

简单点,我们思考一下,最大的这个答案一定是这个框框所在的连通块,这个很显然,因为你加了框框之后,连通块的大小是会增加或者保持不变的。

所以我们直接暴力枚举所有框框摆放的位置就好了。

我们利用滑块的思想去做这道题,那么我们维护这个框框的时候,就只用维护他的边界信息了

这样就可以把n4->n3了。

然后这道题就可以AC了。

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 505;
int n,k;
char grid[maxn][maxn];
int cc[maxn][maxn];
int cc_size[maxn*maxn];
int when_added[maxn*maxn];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,-1,1}; bool inside(int x,int y)
{
if(x<0||x>=n)return false;
if(y<0||y>=n)return false;
return true;
} void dfs(int x,int y,int num)
{
cc[x][y]=num;
++cc_size[num];
for(int i=0;i<4;i++)
{
int x2=x+dx[i];
int y2=y+dy[i];
if(inside(x2,y2)&&grid[x2][y2]=='.'&&cc[x2][y2]==0)
dfs(x2,y2,num);
}
} void add(int x,int y,int& ans,int num)
{
if(inside(x,y)&&grid[x][y]=='.')
{
int id = cc[x][y];
if(when_added[id]!=num)
{
when_added[id]=num;
ans+=cc_size[id];
}
}
} void QAQ()
{
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++)
scanf("%s",grid[i]); int cnt = 0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(grid[i][j]=='.'&&cc[i][j]==0)
dfs(i,j,++cnt); int cur_time = 1;
int Ans = 0; for(int y_low=0;y_low+k-1<n;y_low++)
{
for(int x=0;x<k;x++)
for(int y=y_low;y<y_low+k;y++)
--cc_size[cc[x][y]]; for(int x_low=0;x_low+k-1<n;x_low++)
{
int ans = k*k; for(int x=x_low;x<x_low+k;x++)
{
add(x,y_low-1,ans,cur_time);
add(x,y_low+k,ans,cur_time);
} for(int y=y_low;y<y_low+k;y++)
{
add(x_low-1,y,ans,cur_time);
add(x_low+k,y,ans,cur_time);
} ++cur_time;
Ans=max(Ans,ans); if(x_low+k!=n)
{
for(int y=y_low;y<y_low+k;y++)
{
++cc_size[cc[x_low][y]];
--cc_size[cc[x_low+k][y]];
}
}
} for(int x=n-k;x<n;x++)
for(int y=y_low;y<y_low+k;y++)
++cc_size[cc[x][y]];
}
cout<<Ans<<endl;
} int main()
{
QAQ();
}

Codeforces Round #356 (Div. 2) E. Bear and Square Grid 滑块的更多相关文章

  1. Codeforces Round #356 (Div. 1) C. Bear and Square Grid

    C. Bear and Square Grid time limit per test 3 seconds memory limit per test 256 megabytes input stan ...

  2. Codeforces Round #356 (Div. 2) C. Bear and Prime 100(转)

    C. Bear and Prime 100 time limit per test 1 second memory limit per test 256 megabytes input standar ...

  3. Codeforces Round #356 (Div. 2)B. Bear and Finding Criminals(水题)

    B. Bear and Finding Criminals time limit per test 2 seconds memory limit per test 256 megabytes inpu ...

  4. Codeforces Round #356 (Div. 2)A. Bear and Five Cards(简单模拟)

    A. Bear and Five Cards time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  5. Codeforces Round #356 (Div. 1) D. Bear and Chase 暴力

    D. Bear and Chase 题目连接: http://codeforces.com/contest/679/problem/D Description Bearland has n citie ...

  6. Codeforces Round #356 (Div. 2) D. Bear and Tower of Cubes dfs

    D. Bear and Tower of Cubes 题目连接: http://www.codeforces.com/contest/680/problem/D Description Limak i ...

  7. Codeforces Round #356 (Div. 2) C. Bear and Prime 100 水题

    C. Bear and Prime 100 题目连接: http://www.codeforces.com/contest/680/problem/C Description This is an i ...

  8. Codeforces Round #356 (Div. 2) B. Bear and Finding Criminal 水题

    B. Bear and Finding Criminals 题目连接: http://www.codeforces.com/contest/680/problem/B Description Ther ...

  9. Codeforces Round #356 (Div. 2) A. Bear and Five Cards 水题

    A. Bear and Five Cards 题目连接: http://www.codeforces.com/contest/680/problem/A Description A little be ...

随机推荐

  1. 全网最全JS正则表达式 校验数字

    Js代码 <script type="text/javascript"> function SubmitCk() { var reg = /^([a-zA-Z0-9]+ ...

  2. mysql命令补全工具

    需要在linux中下载mysql插件. 安装mysql插件 yum -y install epel-release python-pip python-devel pip install mycli ...

  3. C# listView subitem 问本值 text 改变 界面会闪烁

    解决方法 就是重写ListView,然后设置双缓冲即可,然后再使用DoubleBufferListView,就不会闪烁了.下面的代码是DoubleBufferListView,并使用FrmMain来测 ...

  4. Bootstrap FileInput中文API文档

    Bootstrap FileInput中文API整理 这段时间做项目用到bootstrap fileinput插件上传文件,在用的过程中,网上能查到的api都不是很全,所以想着整理一份比较详细的文档, ...

  5. Codeforces 264B Good Sequences(DP+素数筛)

    题目链接:http://codeforces.com/problemset/problem/264/B 题目大意:给出n个单调递增的数,让你找出最长的好序列,好序列是一种单调递增的并且相邻元素的最大公 ...

  6. Codeforces 798C - Mike and gcd problem(贪心+数论)

    题目链接:http://codeforces.com/problemset/problem/798/C 题意:给你n个数,a1,a2,....an.要使得gcd(a1,a2,....an)>1, ...

  7. Unix IPC之Posix消息队列(1)

    部分参考:http://www.cnblogs.com/Anker/archive/2013/01/04/2843832.html IPC对象的持续性:http://book.51cto.com/ar ...

  8. IdentityServer4揭秘---登录

    IdentityServer4默认提供了的登录地址是Account/Index 同意页面是Consent/Index 这里我们可以通过IdentittyServer4的用户交互自定义配置设置 在Con ...

  9. Redis数据类型之Set(四)

          前言:set类似于数学上面的集合概念,包含的元素无序,不能重复,能进行交.并.差操作. 一.内部原理              set数据结构,也是随着元素数目的多少而变化.当set中添加 ...

  10. CCF CSP 201512-3 画图

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201512-3 画图 问题描述 用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ...