UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#211418#3803. 激光LarryiaCompile Error//C++114.4kb2024-08-11 11:35:172024-08-11 13:09:31

answer

#include<bits/stdc++.h>
#define ll long long
using namespace std;
void ts(){cout<<"AKIOI"<<endl;}
int n,m;
int k;
const int N=1005;
char c[N][N];
int dp1[3][3][N][N];
pair<int,int> pa[N][N];
vector<pair<int,int> > mo;
int aa,bb,cc,dd;
bool check=0;
int dfs1(int x,int y,int tx,int ty){
    if(dp1[tx+1][ty+1][x+tx][y+ty]>0){
        dp1[tx+1][ty+1][x][y]=dp1[tx+1][ty+1][x+tx][y+ty]+1;
        return dp1[tx+1][ty+1][x][y];
    }
    if(c[x+tx][y+ty]=='.'){
        dp1[tx+1][ty+1][x][y]=dfs1(x+tx,y+ty,tx,ty)+1;
        return dp1[tx+1][ty+1][x][y];
    }
    if(x+tx>n || x+tx<1 || y+ty>m || y+ty<1 || c[x+tx][y+ty]=='#'){
        dp1[tx+1][ty+1][x][y]=1;
        return dp1[tx+1][ty+1][x][y]; 
    }
    if(c[x+tx][y+ty]=='/'){
        int jx,jy;
        int sx=x,sy=y;
        int stx=tx,sty=ty;
        x=x+tx;
        y=y+ty;
        if(tx==-1 &&ty==0){
            jx=0;
            jy=1;
        }
        if(tx==1 && ty==0){
            jx=0;
            jy=-1;
        }
        if(tx==0 && ty==1){
            jx=-1;
            jy=0;
        }
        if(tx==0 && ty==-1){
            jx=1;
            jy=0;
        }
        tx=jx;
        ty=jy;
        int tmd=dfs1(x,y,tx,ty);
        if(c[sx][sy]=='.')dp1[stx+1][sty+1][sx][sy]=tmd+1;
        return tmd+1;
    }
    if(c[x+tx][y+ty]=='\\'){
        int jx,jy;
        int sx=x,sy=y;
        int stx=tx,sty=ty;
        x=x+tx;
        y=y+ty;
        if(tx==-1 &&ty==0){
            jx=0;
            jy=-1;
        }
        if(tx==1 && ty==0){
            jx=0;
            jy=1;
        }
        if(tx==0 && ty==1){
            jx=1;
            jy=0;
        }
        if(tx==0 && ty==-1){
            jx=-1;
            jy=0;
        }
        tx=jx;
        ty=jy;
        int tmd=dfs1(x,y,tx,ty);
        if(c[sx][sy]=='.')dp1[stx+1][sty+1][sx][sy]=tmd+1;
        return tmd+1;
        
    }
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>n>>m;
    for(register int i=1;i<=n;i++){
        for(register int j=1;j<=m;j++){
            cin>>c[i][j];
            if(c[i][j]=='X')k++;
        }
    }
    for(register int i=1;i<=k/2;i++){
        cin>>aa>>bb>>cc>>dd;
        pa[aa][bb]=make_pair(cc,dd);
        pa[cc][dd]=make_pair(aa,bb);
    }
    for(register int i=1;i<=n;i++){
        for(register int j=1;j<=m;j++){
            if(c[i][j]!='.'){
                dp1[1][2][i][j]=-1;
                dp1[2][1][i][j]=-1;
                dp1[0][1][i][j]=-1;
                dp1[1][0][i][j]=-1;
                continue;
            }
            if(dp1[1][2][i][j]==0)dfs1(i,j,0,1);
        }
    }    
    for(register int i=1;i<=n;i++){
        for(register int j=1;j<=m;j++){
            if(c[i][j]!='.'){
                dp1[1][2][i][j]=-1;
                dp1[2][1][i][j]=-1;
                dp1[0][1][i][j]=-1;
                dp1[1][0][i][j]=-1;
                continue;
            }
            if(dp1[2][1][i][j]==0)dfs1(i,j,1,0); 
        }
    }    
    for(register int i=1;i<=n;i++){
        for(register int j=1;j<=m;j++){
            if(c[i][j]!='.'){
                dp1[1][2][i][j]=-1;
                dp1[2][1][i][j]=-1;
                dp1[0][1][i][j]=-1;
                dp1[1][0][i][j]=-1;
                continue;
            }
            if(dp1[1][0][i][j]==0)dfs1(i,j,0,-1);
        }
    }    
    for(register int i=1;i<=n;i++){
        for(register int j=1;j<=m;j++){
            if(c[i][j]!='.'){
                dp1[1][2][i][j]=-1;
                dp1[2][1][i][j]=-1;
                dp1[0][1][i][j]=-1;
                dp1[1][0][i][j]=-1;
                continue;
            }
            if(dp1[0][1][i][j]==0)dfs1(i,j,-1,0);   
        }
    }    
    for(register int i=1;i<=n;i++){
        for(register int j=1;j<=m;j++){
            cout<<dp1[0][1][i][j]<<' ';
        }
        cout<<endl;               
    }
    for(register int i=1;i<=n;i++){
        for(register int j=1;j<=m;j++){
            cout<<dp1[2][1][i][j]<<' ';
        }
        cout<<endl;               
    }
    for(register int i=1;i<=n;i++){
        for(register int j=1;j<=m;j++){
            cout<<dp1[1][0][i][j]<<' ';
        }
        cout<<endl;
    }
    for(register int i=1;i<=n;i++){
        for(register int j=1;j<=m;j++){
            cout<<dp1[1][2][i][j]<<' ';
        }
        cout<<endl;
    }
    return 0;
}
/*
3 3
#..
../
..#
*

详细

answer.code:174:1: error: unterminated comment
 /*\x0d
 ^