P1519 20pts MLE代码求调
  • 板块学术版
  • 楼主lrqcs
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/30 15:15
  • 上次更新2024/7/30 15:59:37
查看原帖
P1519 20pts MLE代码求调
1364494
lrqcs楼主2024/7/30 15:15

RT,代码贴这了。
原帖

#include<stdio.h>
#include<string.h>
#include<queue>
int n,m,stx,sty,edx,edy,x,y,t,ans;
char mp[222][222],vis[222][222];
int p[222][222];int mxxz=0;
std::queue<int>nx,ny,nt;
void bfs(int X,int Y,int XX,int YY,int T){
	nx.push(X),ny.push(Y),nt.push(T);
	nx.push(XX),ny.push(YY),nt.push(T);
	while(!nx.empty()){
		x=nx.front(),y=ny.front(),t=nt.front();
		mxxz=(mxxz>nx.size()?mxxz:nx.size());
		//printf("x=%d,y=%d,t=%d\n",x,y,t);
		nx.pop(),ny.pop(),nt.pop();
		vis[x][y]=1;p[x][y]>t?p[x][y]=t:0;
		if(x+2<n&&!vis[x+2][y]&&mp[x+1][y]==32)
			nx.push(x+2),ny.push(y),nt.push(t+1);
		if(y+2<m&&!vis[x][y+2]&&mp[x][y+1]==32)
			nx.push(x),ny.push(y+2),nt.push(t+1);
		if(x>2&&!vis[x-2][y]&&mp[x-1][y]==32)
			nx.push(x-2),ny.push(y),nt.push(t+1);
		if(y>2&&!vis[x][y-2]&&mp[x][y-1]==32)
			nx.push(x),ny.push(y-2),nt.push(t+1);
	}
}
int main(){
	//freopen("P1519_2.in","r",stdin);
	scanf("%d%d",&n,&m);
	n=n<<1|1,m=m<<1|1;n^=m^=n^=m;
	//getchar();
	//printf("n=%d,m=%d\n",n,m);
	for(int i=1;i<=n;++i){
		getchar();
		for(int j=1;j<=m;++j)
			mp[i][j]=getchar();
	}
	//for(int i=1;i<=n;++i)printf("%s\n",mp[i]+1);
	for(int i=2;i<m;i+=2)
		if(mp[1][i]==32&&!stx)stx=2,sty=i;
		else if(mp[1][i]==32)edx=2,edy=i;
	for(int i=2;i<m;i+=2)
		if(mp[n][i]==32&&!stx)stx=n-1,sty=i;
		else if(mp[n][i]==32)edx=n-1,edy=i;
	for(int i=2;i<n;i+=2)
		if(mp[i][1]==32&&!stx)stx=i,sty=2;
		else if(mp[i][1]==32)edx=i,edy=2;
	for(int i=2;i<n;i+=2)
		if(mp[i][m]==32&&!stx)stx=i,sty=m-1;
		else if(mp[i][m]==32)edx=i,edy=m-1;
	//printf("%d %d %d %d\n",stx,sty,edx,edy);
	memset(p,0x72,sizeof p);
	bfs(stx,sty,edx,edy,1);
	//memset(vis,0,sizeof vis);
	//bfs(1);
	for(int i=2;i<n;i+=2)
		for(int j=2;j<m;j+=2)
			ans<p[i][j]&&p[i][j]!=0x72727272?ans=p[i][j]:0;
//	for(int i=1;i<=n;++i,puts(""))
//		for(int j=1;j<=m;++j){
//			if((i|j)&1)putchar(mp[i][j]);
//			else printf("%d",p[i][j]>9?0:p[i][j]);
//		}
	printf("%d",ans);
	return 0;
}
2024/7/30 15:15
加载中...