二分答案+验证,注意一开始就不连通的话输出0

#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
using namespace std; const int maxn=+;
char s[maxn][maxn];
char tmp[maxn][maxn];
bool flag[maxn][maxn];
int dir[][]={
{,},
{,-},
{,},
{-,}
}; struct X
{
int x,y;
}q[maxn*maxn];
int n,m,Q; void read()
{
scanf("%d%d",&n,&m);
for(int i=;i<n;i++) scanf("%s",s[i]);
scanf("%d",&Q);
for(int i=;i<=Q;i++) scanf("%d%d",&q[i].x,&q[i].y);
} bool P(int a,int b)
{
if(a>=&&a<n)
{
if(b>=&&b<m)
{
if(tmp[a][b]=='')
{
if(flag[a][b]==)
{
return ;
}
}
}
}
return ;
} void dfs(int x,int y)
{
flag[x][y]=;
for(int i=;i<;i++)
{
int newx=x+dir[i][];
int newy=y+dir[i][];
if(P(newx,newy)) dfs(newx,newy);
}
} bool f(int year)
{
for(int i=;i<n;i++)
for(int j=;j<m;j++)
tmp[i][j]=s[i][j]; for(int i=;i<=year;i++) tmp[q[i].x][q[i].y]=''; bool fail=;
for(int j=;j<m;j++) if(tmp[][j]=='') fail=;
if(fail) return ; fail=;
for(int j=;j<m;j++) if(tmp[n-][j]=='') fail=;
if(fail) return ; memset(flag,,sizeof flag);
for(int j=;j<m;j++)
if(tmp[][j]=='')
dfs(,j); fail=;
for(int j=;j<m;j++)
if(tmp[n-][j]==''&&flag[n-][j]==) fail=;
return fail;
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
read();
if(f()) printf("0\n");
else
{
int ans=-;
int left=,right=Q;
while(left<=right)
{
int mid=(left+right)/;
if(f(mid))
{
ans=mid;
right=mid-;
}
else
{
left=mid+;
}
}
printf("%d\n",ans);
}
}
return ;
}

HDU 5652 India and China Origins的更多相关文章

  1. HDU 5652 India and China Origins 二分+并查集

    India and China Origins 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5652 Description A long time ...

  2. 并查集(逆序处理):HDU 5652 India and China Origins

    India and China Origins Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

  3. hdu 5652 India and China Origins 并查集+二分

    India and China Origins Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

  4. HDU 5652 India and China Origins(并查集)

    India and China Origins Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

  5. hdu 5652 India and China Origins 并查集

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5652 题目大意:n*m的矩阵上,0为平原,1为山.q个询问,第i个询问给定坐标xi,yi,表示i年后这 ...

  6. (hdu)5652 India and China Origins 二分+dfs

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5652 Problem Description A long time ago there ...

  7. hdu 5652 India and China Origins 并查集+逆序

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5652 题意:一张n*m个格子的点,0表示可走,1表示堵塞.每个节点都是四方向走.开始输入初始状态方格, ...

  8. HDU 5652 India and China Origins(经典并查集)

    特别经典的一个题,还有一种方法就是二分+bfs 题意:空间内n*m个点,每个点是0或者1,0代表此点可以走,1代表不能走.接着经过q年,每年一个坐标表示此点不能走.问哪年开始图上不能出现最上边不能到达 ...

  9. hdu 5652 India and China Origins 二分+bfs

    题目链接 给一个图, 由01组成, 1不能走. 给q个操作, 每个操作将一个点变为1, 问至少多少个操作之后, 图的上方和下方不联通. 二分操作, 然后bfs判联通就好了. #include < ...

  10. HDU 5652 India and China Origins 二分优化+BFS剪枝

    题目大意:给你一个地图0代表可以通过1代表不可以通过.只要能从第一行走到最后一行,那么中国与印度是可以联通的.现在给你q个点,每年风沙会按顺序侵蚀这个点,使改点不可通过.问几年后中国与印度不连通.若一 ...

随机推荐

  1. 事务(JDBC、Hibernate、Spring)

    如果不用spring管理事务,我们自己写代码来操作事务.那么这个代码怎么写要看底层怎么访问数据库了. 当采用原生JDBC访问数据库时,操作事务需要使用java.sql.Connection的API.开 ...

  2. margin

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  3. HDU 5768 Lucky7 (容斥原理 + 中国剩余定理 + 状态压缩 + 带膜乘法)

    题意:……应该不用我说了,看起来就很容斥原理,很中国剩余定理…… 方法:因为题目中的n最大是15,使用状态压缩可以将所有的组合都举出来,然后再拆开成数组,进行中国剩余定理的运算,中国剩余定理能够求出同 ...

  4. 学习笔记——模板模式Template

    模板模式,主要是利用多态来实现具体算法和父类逻辑的松耦合.父类中TemplateMethod内部定义了相应的算法操作顺序,子类负责实现相应的具体实现. 举例: 项目中曾遇到过一个需求,叫做高级价格体系 ...

  5. java包(package)

    为了更好地组织类,java提供了包机制,用于区别类名的命名空间. 这样在不同的命名空间就可以有相同命名的类. 1 把功能相似或相关的类或接口阻止在同一个包中,方便类的查找和使用. 2 如同文件夹一样, ...

  6. android 定时器总结

    1:handler实现定时器的功能 Handler handler=new Handler(); //立即执行Runnable对象   public final boolean post(Runnab ...

  7. swift(2)元祖(Tuple)

    let somePoint = (, ) switch somePoint { , ): // 位于远点 println("(0, 0) is at the origin") ): ...

  8. android 代码优化:封锁输出日志

    可以使用 ProGuard 完全地删除任何在发布版中无用的语句,关于 ProGuard 参见: http://developer.android.com/guide/developing/tools/ ...

  9. startActivityForResult相关的

    在Fragment里调用startActivityForResult,界面回来后,会先走其宿主Activity的onActivityResult方法,再走Fragment的. 在Fragment里面嵌 ...

  10. git 管理多个私钥

    .ssh/config文件: host imspring hostname 182.92.153.2 IdentityFile ~/.ssh/id_rsa port 22