对题意的一点问题

P2199 最后的迷宫

@[Aakkosetsumussa](/user/400468) 他跑到(6,6)应该就可以看到了
by iterator_traits @ 2023-02-08 14:01:06


@[iterator_traits](/user/72922) 我也是这样想的
by Aakkosetsumussa @ 2023-02-08 14:05:32


现在调到60分,但还是过不去 ```cpp #include<bits/stdc++.h> using namespace std; typedef long long inr; typedef unsigned long long unr; typedef long double onr; #define fr(y) for(inr i=1;i<=y;i++) int n,m; struct chessboard { int x,y,step; } c; queue<chessboard> q; int a[5005][5005],vis[5007][5007]; int dx[7]= {0,1,0,-1},dy[7]= {1,0,-1,0}; char ch; int bx,by,cx,cy; int main() { ios::sync_with_stdio(false); cin>>n>>m; for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) { cin>>ch; if(ch=='O') a[i][j]=0; else a[i][j]=1; } while(cin>>cx>>cy>>bx>>by) { for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) vis[i][j]=0; if(bx==0&&by==0&&cx==0&&cy==0) break; int pa=cx,pb=cy; while(a[pa][pb]!=1&&pa<=n) vis[pa++][pb]=-1; pa=cx,pb=cy; while(a[pa][pb]!=1&&pb<=m) vis[pa][pb++]=-1; pa=cx,pb=cy; while(a[pa][pb]!=1&&pa>=1) vis[pa--][pb]=-1; pa=cx,pb=cy; while(a[pa][pb]!=1&&pb>=1) vis[pa][pb--]=-1; pa=cx,pb=cy; while(a[pa][pb]!=1&&pa<=n&&pb>=1) vis[pa++][pb--]=-1; pa=cx,pb=cy; while(a[pa][pb]!=1&&pb<=m&&pa<=n) vis[pa++][pb++]=-1; pa=cx,pb=cy; while(a[pa][pb]!=1&&pa>=1&&pb>=1) vis[pa--][pb--]=-1; pa=cx,pb=cy; while(a[pa][pb]!=1&&pb<=m&&pa>=1) vis[pa--][pb++]=-1; vis[cx][cy]=-1; if(vis[bx][by]==-1) { cout<<0<<endl; continue; } vis[bx][by]=1; c.x=bx,c.y=by,c.step=0; q.push(c); bool fg=0; while(!q.empty()) { chessboard now=q.front(); q.pop(); /* cout<<now.x<<" "<<now.y<<" "<<now.step<<" "<<vis[now.x][now.y]<<endl; for(int i=1; i<=n; i++,cout<<endl) for(int j=1; j<=m; j++) cout<<vis[i][j]<<" "; cout<<endl; for(int i=1; i<=n; i++,cout<<endl) for(int j=1; j<=m; j++) cout<<a[i][j]<<" "; cout<<endl; */ for(int i=0; i<4; i++) { int tx=now.x+dx[i], ty=now.y+dy[i]; if(0<tx&&tx<=n&&0<ty&&ty<=m&&vis[tx][ty]!=1&&a[tx][ty]!=1) { chessboard to; to.x=tx,to.y=ty,to.step=now.step+1; if(vis[tx][ty]!=-1) vis[tx][ty]=1; else { fg=1; cout<<now.step+1<<endl; break; } q.push(to); } } if(fg==1) break; } if(fg==0) cout<<"Poor Harry\n"; //*/ } return 0; }/* 7 7 OOOOOOO OOOOOOO OOXXXOO OOXOXOO OOXXOOO OOOOOOO OOOOOOO 4 4 1 1 */ ```
by Aakkosetsumussa @ 2023-02-08 14:06:05


哈利的实力《非常》好 好他为什么要戴眼镜?
by liujiafang @ 2023-03-28 18:58:20


视力
by liujiafang @ 2023-03-28 18:58:33


|