选取子序列WA28求条

不知道为什么对着题解看了几遍只有28,实在调不出来了
题面:
https://www.xinyoudui.com/ac/contest/7740019400006B3045C4416/problem/8836

窝的代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1005;
int n,m,sx,sy;
int lr[N][N],ud[N][N],dist[N][N];
int dx[]={1,-1,0,0},dy[]={0,0,1,-1};
char ar[N][N];
void bfs(){
	memset(dist,0x3f,sizeof dist);
	queue<pair<int,int> >q;
	q.push({1,1});
	dist[1][1]=0;
	while(!q.empty()){
		pair<int,int>head=q.front();
		int x=head.first,y=head.second;
		q.pop();
		for(int i=0;i<4;i++){
			for(int j=1;j<=1000;j*=2){
				int _x=x+dx[i]*j,_y=y+dy[i]*j;
				if(_x<1||_y<1||_x>n||_y>m)continue;
				if(x!=_x&&abs(ud[_x][_y]-ud[x][y]))break;
				if(y!=_y&&abs(lr[_x][_y]-lr[x][y]))break;
				if(dist[_x][_y]>dist[x][y]+1){
					dist[_x][_y]=dist[x][y]+1;
					q.push({_x,_y});
				}
			}
		}
		
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>ar[i][j];
			if(ar[i][j]=='X')lr[i][j]=ud[i][j]=1;
			if(ar[i][j]=='#')sx=i,sy=j;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			lr[i][j]+=lr[i][j-1];
			ud[i][j]+=ud[i-1][j];
		}
	}
	bfs();
	if(dist[sx][sy]>1e9)cout<<-1;
	else cout<<dist[sx][sy];
	return 0;
}

所以代码块是哪个按键
找不到所以没格式化
(新手刚接触论坛 :sweat_smile:

帮你格式化好了

好的,谢谢

等我恢复正常活动以后我再搞新用户的教学帖子吧,现在实在没时间

??
为什么??

他在备考啊

@稻叶昙
47EF8A7A