BZOJ3808 : Neerc2012 Labyrinth of the Minotaur
左上角和右下角不四连通等价于左下角和右上角八连通
枚举正方形的左上角,先二分出最大的边长,使得里面不含障碍物
然后再二分出最小的边长,使得两部分连通,用前缀和判断
这题WA了好久…一直对拍都没问题…于是去看原题,发现有SPJ…
然后改了个枚举姿势就过了…
#include<cstdio>
#define N 1510
int n,m,i,j,dx[8]={-1,-1,-1,0,0,1,1,1},dy[8]={-1,0,1,-1,1,-1,0,1},x[N*N],y[N*N],h,t,sum[3][N][N],ans,ansx,ansy,l,r,mid;
char s[N];
bool a[N][N],v[N][N];
inline int min(int&a,int b){if(a>b)a=b;}
inline int max(int&a,int b){if(a<b)a=b;}
inline int ask(int p,int x,int y,int k){
int x1=x-1,y1=y-1,x2=x+k-1,y2=y+k-1;
max(x1,0),max(y1,0),min(x2,n),min(y2,m);
return sum[p][x2][y2]-sum[p][x1][y2]-sum[p][x2][y1]+sum[p][x1][y1];
}
inline void add(int nx,int ny){
if(nx<1||nx>n||ny<1||ny>m||!a[nx][ny]||v[nx][ny])return;
v[nx][ny]=1,x[++t]=nx,y[t]=ny;
}
inline void bfs(int nx,int ny){for(h=1,t=0,add(nx,ny);h<=t;h++)for(j=0;j<8;j++)add(x[h]+dx[j],y[h]+dy[j]);}
int main(){
scanf("%d%d",&m,&n);gets(s);
for(i=1;i<=n;i++)for(gets(s+1),j=1;j<=m;j++)a[i][j]=s[j]=='#';
a[1][1]=a[n][m]=1;
for(i=1;i<=n;i++)for(j=1;j<=m;j++)sum[0][i][j]=sum[0][i-1][j]+sum[0][i][j-1]-sum[0][i-1][j-1]+a[i][j];
a[1][1]=a[n][m]=0;
for(i=1;i<=n;i++)bfs(i,1);
for(i=1;i<=m;i++)bfs(n,i);
for(i=1;i<=n;i++)for(j=1;j<=m;j++)sum[1][i][j]=sum[1][i-1][j]+sum[1][i][j-1]-sum[1][i-1][j-1]+v[i][j],v[i][j]=0;
for(i=1;i<=n;i++)bfs(i,m);
for(i=1;i<=m;i++)bfs(1,i);
for(i=1;i<=n;i++)for(j=1;j<=m;j++)sum[2][i][j]=sum[2][i-1][j]+sum[2][i][j-1]-sum[2][i-1][j-1]+v[i][j];
ans=N;
for(i=1;i<=n;i++)for(j=1;j<=m;j++){
l=1,r=n-i+1,min(r,m-j+1),min(r,ans-1),t=0;
while(l<=r){
mid=(l+r)>>1;
if(!ask(0,i,j,mid))l=(t=mid)+1;else r=mid-1;
}
l=1,r=t;
while(l<=r){
mid=(l+r)>>1;
if((ask(1,i-1,j-1,mid+2)||j==1||i+mid-1==n)&&(ask(2,i-1,j-1,mid+2)||i==1||j+mid-1==m))ans=mid,ansx=i,ansy=j,r=mid-1;else l=mid+1;
}
}
if(ans==N)puts("Impossible");else printf("%d %d %d",ans,ansy,ansx);
return 0;
}
BZOJ3808 : Neerc2012 Labyrinth of the Minotaur的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- NEERC2012
NEERC2012 A - Addictive Bubbles 题目描述:有一个\(n \times m\)的棋盘,还有不同颜色的棋子若干个,每次可以消去一个同种颜色的联通块,得到的分数为联通块中的棋 ...
- 2016.03.04,英语,《Vocabulary Builder》Unit 04
vor: 来自拉丁动词vorare,指to eat,-ivorous指吃某种食物的eater.carn肉,肉欲+vore吃→吃肉的:carnival狂欢节,谢肉节voracious a 狼吞虎咽的(v ...
- Codeforces Round #354 (Div. 2) D. Theseus and labyrinth bfs
D. Theseus and labyrinth 题目连接: http://www.codeforces.com/contest/676/problem/D Description Theseus h ...
- 【25.93%】【676D】Theseus and labyrinth
time limit per test3 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 2014百度之星资格赛 1004:Labyrinth(DP)
Labyrinth Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- ural 1145. Rope in the Labyrinth
1145. Rope in the Labyrinth Time limit: 0.5 secondMemory limit: 64 MB A labyrinth with rectangular f ...
- [POJ1383]Labyrinth
[POJ1383]Labyrinth 试题描述 The northern part of the Pyramid contains a very large and complicated labyr ...
- timus 1033 Labyrinth(BFS)
Labyrinth Time limit: 1.0 secondMemory limit: 64 MB Administration of the labyrinth has decided to s ...
随机推荐
- [BZOJ1659][Usaco2006 Mar]Lights Out 关灯
[BZOJ1659][Usaco2006 Mar]Lights Out 关灯 试题描述 奶牛们喜欢在黑暗中睡觉.每天晚上,他们的牲口棚有L(3<=L<=50)盏灯,他们想让亮着的灯尽可能的 ...
- phpmyadmin #1045 #2002 无法登录 MySQL 服务器的解决方
1.首先说下phpmyadmin的安装 a.解压放到网站的某个目录下,如mydbb.将config.sample.inc.php复制成config.inc.php 2.#2002 无法登录 MySQL ...
- django-cms 代码研究(七)杂七杂八
实体关系图 核心对象: cms_page/cms_placeholder/cms_cmsplugin. page模型类继承关系图 CMSPlugin&Placeholder模型类继承关系图 = ...
- RAID阵列的初始化与管理
如果我们创建RAID阵列的目的是新部署一台服务器,我们建议所有新创建的RAID阵列都应该做初始化操作,这样,硬盘上原有的用户数据将被清除,以便进行后续的系统,软件安装. 转自: http://zh.c ...
- ssh: connect to host localhost port 22: Connection refused 问题
错误原因:1.sshd 未安装2.sshd 未启动 3.防火墙 4需重新启动ssh 服务 解决方法:1.确定安装sshd: $ sudo apt-get install openssh-server ...
- IIS安装时,添加/编辑应用程序扩展名映射 确定按钮不可用。
原因是:执行文件的路径太长,需要激活按钮. 方法一:选择较短路径的执行文件,先激活按钮. 方法二:点击该路径,就可以激活确认按钮了.
- div设置边框黑框显示
style="width:756px; height:68px; border:1px solid #000000;"
- VIM替换、截取及追加操作
参考: http://blog.csdn.net/love__coder/article/details/6739670 http://blog.csdn.net/love__coder/articl ...
- 转MYSQL学习(五) 索引
索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型. 根据存储引擎定义每个表的最大索引数和最大索引长度.所有存储引擎支持每个表至少16个索引,总 ...
- JS操作DOM
[功能:点击按钮显示表单] <html> <head> <meta http-equiv="Content-Type" content="t ...