hdu5335(搜索)
Walk Out
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1977 Accepted Submission(s):
373
maze, the right-bottom corner is the exit (position (n,m)
is the exit). In every position of this maze, there is either a 0
or a 1
written on it.
An explorer gets lost in this grid. His position now is
(1,1)
, and he wants to go to the exit. Since to arrive at the exit is easy for him,
he wants to do something more difficult. At first, he'll write down the number
on position (1,1)
. Every time, he could make a move to one adjacent position (two positions are
adjacent if and only if they share an edge). While walking, he will write down
the number on the position he's on to the end of his number. When finished, he
will get a binary number. Please determine the minimum value of this number in
binary system.
, indicating the number of testcases.
For each testcase, the first line
contains two integers n
and m (1≤n,m≤1000)
. The i
-th line of the next n
lines contains one 01 string of length m
, which represents i
-th row of the maze.
Please eliminate all the preceding 0
unless the answer itself is 0
(in this case, print 0
instead).
2 2
11
11
3 3
001
111
101
101
- #include <iostream>
- #include <cstdio>
- #include <vector>
- #include <cstring>
- #include <algorithm>
- #include <queue>
- #include <queue>
- #define SIZE 1005
- #define maxn 2010
- using namespace std;
- int n,m;
- char Map[SIZE][SIZE];
- int visit[SIZE][SIZE];
- int d[SIZE][SIZE];
- int VIS[maxn][maxn];
- int tot;
- int dir[][]={,-,,,-,,,};
- struct node
- {
- int x,y,cnt;
- };
- queue <node> que;
- void init()
- {
- tot=;
- memset(visit,,sizeof(visit));
- memset(d,,sizeof(d));
- memset(VIS,,sizeof(VIS));
- }
- void dfs(int x,int y)
- {
- if(visit[x][y]==)
- return ;
- visit[x][y]=;
- if(Map[x][y]=='')
- return ;
- d[x][y]=;
- if(x+y>tot)
- tot=x+y;
- if(x>)
- dfs(x-,y);
- if(x<n)
- dfs(x+,y);
- if(y>)
- dfs(x,y-);
- if(y<m)
- dfs(x,y+);
- }
- void bfs()
- {
- if(Map[][]=='')
- {
- node a,b,c;
- a.x=; a.y=; a.cnt=;
- que.push(a);
- VIS[][]=;
- d[][]=;
- while(!que.empty())
- {
- b=que.front();
- que.pop();
- if(b.cnt > tot)
- tot=b.cnt;
- for(int i=;i<;i++)
- {
- int next_x=b.x+dir[i][];
- int next_y=b.y+dir[i][];
- if( (<=next_x) &&(next_x<=n) && (<=next_y) && (next_y<=m) && VIS[next_x][next_y]== && Map[next_x][next_y]=='')
- {
- c.x=next_x; c.y=next_y;
- c.cnt=next_x+next_y;
- que.push(c);
- VIS[next_x][next_y]=;
- d[next_x][next_y]=;
- }
- }
- }
- }
- else
- return ;
- }
- void solve()
- {
- if(tot==m+n)
- {
- printf("0\n");
- return ;
- }
- if(tot==)
- {
- tot=; //代表起始点为(1,1)
- d[][]=;
- printf("");
- }
- for(int p=tot;p<n+m;p++)
- {
- int flag=;
- for(int q=max(p-m,);q<=min(p-,n);q++) //q代表行号
- {
- if(d[q][p-q])
- {
- int x=(Map[q][p-q+]-'')?:;
- int y=(Map[q+][p-q]-'')?:;
- flag=min(flag,x);
- flag=min(flag,y);
- }
- }
- for(int q=max(p-m,);q<=min(p-,n);q++)
- {
- if(d[q][p-q])
- {
- int x=(Map[q][p-q+]-'')?:;
- int y=(Map[q+][p-q]-'')?:;
- if(x==flag)
- d[q][p-q+]=;
- if(y==flag)
- d[q+][p-q]=;
- }
- }
- printf("%d",flag);
- }
- printf("\n");
- }
- int main()
- {
- //freopen("test.txt","r",stdin);
- int t;
- scanf("%d",&t);
- while(t --)
- {
- init();
- scanf("%d%d%*c",&n,&m);
- // printf("%d %d %d\n",n,m,tot);
- for(int i = ; i <= n ; i ++)
- {
- scanf("%s",&Map[i][]);
- }
- // getchar();
- //dfs(1,1);
- bfs();
- // printf("tot: %d\n",tot);
- solve();
- }
- return ;
- }
hdu5335(搜索)的更多相关文章
- SQLSERVER走起微信公众帐号已经开通搜狗微信搜索
SQLSERVER走起微信公众帐号已经开通搜狗微信搜索 请打开下面链接 http://weixin.sogou.com/gzh?openid=oIWsFt-hiIb_oYqQHaBMoNwRB2wM ...
- solr_架构案例【京东站内搜索】(附程序源代码)
注意事项:首先要保证部署solr服务的Tomcat容器和检索solr服务中数据的Tomcat容器,它们的端口号不能发生冲突,否则web程序是不可能运行起来的. 一:solr服务的端口号.我这里的sol ...
- SQLServer地址搜索性能优化例子
这是一个很久以前的例子,现在在整理资料时无意发现,就拿出来再改写分享. 1.需求 1.1 基本需求: 根据输入的地址关键字,搜索出完整的地址路径,耗时要控制在几十毫秒内. 1.2 数据库地址表结构和数 ...
- HTML5轻松实现搜索框提示文字点击消失---及placeholder颜色的设置
在做搜索框的时候无意间发现html5的input里有个placeholder属性能轻松实现提示文字点击消失功能,之前还傻傻的在用js来实现类似功能... 示例 <form action=&quo ...
- bzoj1079--记忆化搜索
题目大意:有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块.所有油漆刚好足够涂满所有木块,即c1+c2+...+ck=n.相邻两个木块涂相同色显得 ...
- bzoj3208--记忆化搜索
题目大意: 花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区的人员开发一个滑雪项目. 我们可以把风景区看作一个n*n的地图,每个点有它的初始高度,滑雪只能从高处往低处滑[严格大于] ...
- Android中通过ActionBar为标题栏添加搜索以及分享视窗
在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果.Action ...
- 一步步开发自己的博客 .NET版(5、Lucenne.Net 和 必应站内搜索)
前言 这次开发的博客主要功能或特点: 第一:可以兼容各终端,特别是手机端. 第二:到时会用到大量html5,炫啊. 第三:导入博客园的精华文章,并做分类.(不要封我) 第四:做 ...
- Go语言实战 - 我需要站内搜索
山坡网的用户抱怨"为什么搜索'二鬼子李富贵'找不到'二鬼子汉奸李富贵'?我用百度搜都能找到." 当时我就滴汗了,用户说的有道理,应该要能搜索到. 之前的方案很简单,用户输入的字串会 ...
随机推荐
- 腾讯云CVM使用记录--使用root权限
1.su root 指令 ,执行下列命令获取root权限: sudo /bin/su - root 注意:严禁执行password命令,root密码默认不能被修改.
- 【收藏】实战Nginx与PHP(FastCGI)的安装、配置与优化
拜读南非蚂蚁大牛的文章真是有所收获 http://ixdba.blog.51cto.com/2895551/806622 一.什么是 FastCGI FastCGI是一个可伸缩地.高速地在HTTP s ...
- msp430入门编程44
msp430中C语言的人机交互--菜单交互方式
- 利用开源工具实现轻量级上网行为审计(来源ispublic.com)
https://blog.csdn.net/cnbird2008/article/details/5875781
- [Bzoj1022][SHOI2008]小约翰的游戏John(博弈论)
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2976 Solved: 1894[Submit] ...
- HDU 5360 【优先队列+贪心】
题意: 给定N个无序区间. 对合法区间的定义是: 在这个区间之前已经选出了至少l个合法区间,最多选出了r个合法区间.则该区间为合法区间. 输出最多能挑选出多少个合法区间,并输出合法区间的数量. 思路: ...
- spring/spring boot/spring mvc中用到的注解
在spring Boot中几乎可以完全弃用xml配置文件,本文的主题是分析常用的注解. Spring最开始是为了解决EJB等大型企业框架对应用程序的侵入性,因此大量依靠配置文件来“非侵入式”得给POJ ...
- Eclipse移植项目时JDK版本不匹配Project facet Java version 1.7 is not supported
Eclipse移植项目时JDK版本不匹配Project facet Java version 1.7 is not supported 如果原有项目用的为JDK1.7,而自己的是低版本JDK,比如1. ...
- WinCE5.0如何安装.NET3.5
首先去微软官网下载.NET Compact Framework 3.5 Redistributable 点击下载 下载页面 一共有两种安装方式,我们先介绍常规的安装方式 1.设备连接到电脑,然后双击下 ...
- arcgis安装路径的获得
//Get the ArcGIS install location string sInstall = ESRI.ArcGIS.RuntimeManager.ActiveRuntime.Path; / ...