zoukankan      html  css  js  c++  java
  • [POJ]poj2632(模拟)

    题意:模拟

    模拟就行

    #include<iostream>
    #include<cstdio>
    #include<stack>
    
    using namespace std;
    
    const int N=1e2+7;
    
    struct robot{
        int id,x,y,to;
    };
    
    const int dx[4]={0,1,0,-1};
    const int dy[4]={1,0,-1,0};
    
    int T,n,m,A,B,flag;
    
    int map[N][N];
    
    robot rbt[N];
    
    void init(){
        for(int i=0;i<=B+1;i++)map[0][i]=map[A+1][i]=0;
        for(int i=0;i<=A+1;i++)map[i][0]=map[i][B+1]=0;
        for(int i=1;i<=n;i++)map[rbt[i].x][rbt[i].y]=0;
        flag=0;
        
        cin>>A>>B>>n>>m;
        
        for(int i=0;i<=B+1;i++)map[0][i]=map[A+1][i]=n+1;
        for(int i=0;i<=A+1;i++)map[i][0]=map[i][B+1]=n+1;
        for(int i=1;i<=n;i++){
            char f[3];
            cin>>rbt[i].x>>rbt[i].y>>f;
            if(f[0]=='N')rbt[i].to=0;
            if(f[0]=='E')rbt[i].to=1;
            if(f[0]=='S')rbt[i].to=2;
            if(f[0]=='W')rbt[i].to=3;
            map[rbt[i].x][rbt[i].y]=i;
        }
    }
    
    int main(){
        cin>>T;
        while(T--){
             
            init();
             
            for(int i=1;i<=m;i++){
                int num,rep;
                char f[3];
                cin>>num>>f>>rep;
                if(flag)continue;
                
                if(f[0]=='R'){
                    rbt[num].to=(rbt[num].to+rep)%4;
                }
                
                if(f[0]=='L'){
                    rbt[num].to=(rbt[num].to-rep+4000)%4;
                }
                
                if(f[0]=='F'){
                    for(int i=1;i<=rep;i++){
                    
                    int nx=dx[rbt[num].to]+rbt[num].x;
                    int ny=dy[rbt[num].to]+rbt[num].y;
                    if(map[nx][ny]){
                        if(map[nx][ny]==n+1){
                            printf("Robot %d crashes into the wall
    ",num);
                            flag=1;
                            break;
                        }
                        else {
                            printf("Robot %d crashes into robot %d
    ",num,map[nx][ny]);
                            flag=1;
                            break;
                        }
                    }
                    else {
                        map[rbt[num].x][rbt[num].y]=0;
                        map[nx][ny]=num;
                        rbt[num].x=nx;
                        rbt[num].y=ny;
                    }
                    }
                }
            }
            if(!flag)printf("OK
    ");
        } 
        
    }
  • 相关阅读:
    BNU 51002 BQG's Complexity Analysis
    BNU OJ 51003 BQG's Confusing Sequence
    BNU OJ 51000 BQG's Random String
    BNU OJ 50999 BQG's Approaching Deadline
    BNU OJ 50998 BQG's Messy Code
    BNU OJ 50997 BQG's Programming Contest
    CodeForces 609D Gadgets for dollars and pounds
    CodeForces 609C Load Balancing
    CodeForces 609B The Best Gift
    CodeForces 609A USB Flash Drives
  • 原文地址:https://www.cnblogs.com/xutianshu/p/10518303.html
Copyright © 2011-2022 走看看