HDU 5652 India and China Origins
二分答案+验证,注意一开始就不连通的话输出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的更多相关文章
- HDU 5652 India and China Origins 二分+并查集
India and China Origins 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5652 Description A long time ...
- 并查集(逆序处理):HDU 5652 India and China Origins
India and China Origins Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/ ...
- hdu 5652 India and China Origins 并查集+二分
India and China Origins Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/ ...
- HDU 5652 India and China Origins(并查集)
India and China Origins Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/ ...
- hdu 5652 India and China Origins 并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5652 题目大意:n*m的矩阵上,0为平原,1为山.q个询问,第i个询问给定坐标xi,yi,表示i年后这 ...
- (hdu)5652 India and China Origins 二分+dfs
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5652 Problem Description A long time ago there ...
- hdu 5652 India and China Origins 并查集+逆序
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5652 题意:一张n*m个格子的点,0表示可走,1表示堵塞.每个节点都是四方向走.开始输入初始状态方格, ...
- HDU 5652 India and China Origins(经典并查集)
特别经典的一个题,还有一种方法就是二分+bfs 题意:空间内n*m个点,每个点是0或者1,0代表此点可以走,1代表不能走.接着经过q年,每年一个坐标表示此点不能走.问哪年开始图上不能出现最上边不能到达 ...
- hdu 5652 India and China Origins 二分+bfs
题目链接 给一个图, 由01组成, 1不能走. 给q个操作, 每个操作将一个点变为1, 问至少多少个操作之后, 图的上方和下方不联通. 二分操作, 然后bfs判联通就好了. #include < ...
- HDU 5652 India and China Origins 二分优化+BFS剪枝
题目大意:给你一个地图0代表可以通过1代表不可以通过.只要能从第一行走到最后一行,那么中国与印度是可以联通的.现在给你q个点,每年风沙会按顺序侵蚀这个点,使改点不可通过.问几年后中国与印度不连通.若一 ...
随机推荐
- 安装MSYS2过程遇到的问题及解决记录
1.在安装结束后按照官方教程开始更新系统是遇到了如下的错误 could not open file /var/lib/pacman/sync/msys32.db: Unrecognized archi ...
- json的学习笔记
json比较简单,所以先从json开始学起. 一 json的名称: json的全称是javascript object notation,中文名称为js 对象表示法. json的定义:json是一种轻 ...
- Android中图片占用内存的计算
Android中图片占用内存的计算 原文链接 http://blog.sina.com.cn/s/blog_4e60b09d01016133.html 在Android开发中,我现在发现很多人还不 ...
- 初识Selenium(一)
Selenium入门相关PPT参考网址:http://wenku.baidu.com/view/d1e7d90390c69ec3d5bb7565.html?from=search 内容引用网址:htt ...
- 在 Linux 系统中安装Load Generator ,并在windows 调用方法
在 Linux 系统中安装Load Generator ,并在windows 调用 由于公司需要测试系统的最大用户承受能力,所以需要学习使用loadrunner.在安装的时候碰到了不少问题,所以写下此 ...
- Linux系统编程读书笔记
文件I/O模型 Linux的哲学思想,一切皆文件,这也是Linux文件操作的方便之处.系统调用不会分配缓冲区用以返回信息给调用者.所以必须提前分配大小合适的缓冲区并将缓冲区指针传递给系统调用. 1.o ...
- 最小生成树Prim
首先解释什么是最小生成树,最小生成树是指在一张图中找出一棵树,任意两点的距离已经是最短的了. 算法要点: 1.用book数组存放访问过的节点. 2.用dis数组保存对应下标的点到树的最近距离,这里要注 ...
- opencart配置税率
1.System->Localisation->Geo Zones新增税收区域 2.System->Localisation->Taxes->Tax Rates新增税率 ...
- drawable文件夹详解
QVGA使用ldpi,虽然有不同尺寸,但都是120dpi左右:HVGA同理:如下图: -finger 用于触摸屏的设备 -hdpi 近似于240dpi的高级显示密度的屏幕 -mdpi ...
- Integer自动装箱拆箱bug,创建对象在-128到127
1 public class Demo3 { public static void main(String[] args) { Integer a = 1; Integer b = 2; Intege ...