Heim  >  Artikel  >  Web-Frontend  >  Codeforces Round #224 (Div. 2) D 暴力搜索加记忆化_html/css_WEB-ITnose

Codeforces Round #224 (Div. 2) D 暴力搜索加记忆化_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-24 12:00:101429Durchsuche

题意读了半年,英语太渣,题意是摆两个棋子在棋盘上作为起点,但是起点不能在#上,然后按照图的指示开始走, 右 ^上 v下,走的时候只能按照图的指示走,如果前方是 #的话,可以走进去,但是 走进去之后便不能再走了,走的途中两个棋子不能相碰,但是最终都走到同一个#里是没事的,并且若是能走 无限步的话 输出 -1, 例如  >


一开始被输出-1给困住了,因为除了 .>

求出每个点作为起点的最大步数以后,开始寻找,若有两个点的最大步数相同,而且他们在走的过程中没有相碰,这样最大步数和 就是 ans + ans  ,若找不到的话 一前一后放置两个棋子肯定就是最优得了  也就是 ans + ans - 1,好了就是代码的 实现了,深搜写的有点搓, 


const int MAXN = 8000000 + 55;char aa[2000 + 55][2000 + 55];int mp[2000 + 55][2000 + 55];int xx[5] = {-1,1,0,0};int yy[5] = {0,0,-1,1};int dis[2000 + 55][2000 + 55];bool vis[2000 + 55][2000 + 55];int bb[2000 + 55][2000 + 55];int n,m;int ans;void init() {	memset(aa,0,sizeof(aa));	memset(mp,0,sizeof(mp));	memset(dis,-1,sizeof(dis));	memset(vis,0,sizeof(vis));	memset(bb,-1,sizeof(bb));}bool input() {	while(scanf("%d %d",&n,&m) == 2) {		for(int i=0;i<n scanf for j="0;j<m;j++)" if>')mp[i][j] = 3;			}		}		return false;	}	return true;}bool isok(int x,int y) {	if(x =n || y = m)return true;	return false;}int dfs1(int x,int y) {	if(isok(x,y))return 0;	if(vis[x][y])return MAXN;	if(dis[x][y] != -1) return dis[x][y];	vis[x][y] = 1;	if(mp[x][y] == -1) {		vis[x][y] = 0;		dis[x][y] = 0;		return 0;	}	else {		int tmp = dfs1(x + xx[mp[x][y]],y + yy[mp[x][y]]) + 1;		vis[x][y] = 0;		dis[x][y] = tmp;		return tmp;	}}int dfs2(int x,int y,int cnt) {	if(bb[x][y] != -1) {		if(bb[x][y] == cnt && mp[x][y] != -1)return 0;		return 1;	}	if(mp[x][y] == -1) {		bb[x][y] = cnt;		return 1;	}	else {		bb[x][y] = cnt;		return dfs2(x + xx[mp[x][y]],y + yy[mp[x][y]],cnt + 1);	}}void cal() {	ans = 0;	int mark;	for(int i=0;i<n for j="0;j<m;j++)" if int tmp="dfs1(i,j);">= MAXN){ans = MAXN;return;}			ans = max(ans,tmp);		}	}	if(ans == 0)return ;	mark = 0;	for(int i=0;i<n for j="0;j<m;j++)" if ans> 1){ans *= 2;return ;}			}		}	}	ans += (ans - 1);}void output() {	if(ans >= MAXN)puts("-1");	else cout  <br>  <br>  <p></p> </n></n></n>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn