poj 2632 Crashing Robots
2011-07-22 22:56
330 查看
#include<iostream> //简单模拟题,千万要注意所给表格的x,y轴表示法与一般的相反 using namespace std; char ch,action; int pos[100000][2],dir[100000],vis[102][102]; int k,a,b,x,y,n,m,d,robot,repeat; int main() { cin>>k; while(k--) { cin>>a>>b>>n>>m; memset(vis,0,sizeof(vis)); for(int i=1;i<=n;++i) { cin>>pos[i][0]>>pos[i][1]>>ch; vis[pos[i][0]][pos[i][1]]=i; if(ch=='N') dir[i]=1; else if(ch=='W') dir[i]=2; else if(ch=='S') dir[i]=3; else if(ch=='E') dir[i]=4; } int tag=0; while(m--) { cin>>robot>>action>>repeat; if(tag) continue; int xx=pos[robot][0],yy=pos[robot][1]; if(action=='F') { vis[xx][yy]=0; if(!tag&&dir[robot]==1) { for(int j=yy+1;!tag&&j<=yy+repeat;++j) if(j>b) printf("Robot %d crashes into the wall\n",robot),tag=1; else if(vis[xx][j]!=0) printf("Robot %d crashes into robot %d\n",robot,vis[xx][j]),tag=1; if(!tag) vis[xx][yy+repeat]=robot,pos[robot][0]=xx,pos[robot][1]=yy+repeat; } else if(!tag&&dir[robot]==3) { for(int j=yy-1;!tag&&j>=yy-repeat;--j) if(j<1) printf("Robot %d crashes into the wall\n",robot),tag=1; else if(vis[xx][j]!=0) printf("Robot %d crashes into robot %d\n",robot,vis[xx][j]),tag=1; if(!tag) vis[xx][yy-repeat]=robot,pos[robot][0]=xx,pos[robot][1]=yy-repeat; } else if(!tag&&dir[robot]==2) { for(int i=xx-1;!tag&&i>=xx-repeat;--i) if(i<1) printf("Robot %d crashes into the wall\n",robot),tag=1; else if(vis[i][yy]!=0) printf("Robot %d crashes into robot %d\n",robot,vis[i][yy]),tag=1; if(!tag) vis[xx-repeat][yy]=robot,pos[robot][0]=xx-repeat,pos[robot][1]=yy; } else if(!tag&&dir[robot]==4) { for(int i=xx+1;!tag&&i<=xx+repeat;++i) if(i>a) printf("Robot %d crashes into the wall\n",robot),tag=1; else if(vis[i][yy]!=0) printf("Robot %d crashes into robot %d\n",robot,vis[i][yy]),tag=1; if(!tag) vis[xx+repeat][yy]=robot,pos[robot][0]=xx+repeat,pos[robot][1]=yy; } } else { repeat%=4; if(action=='R') { dir[robot]=dir[robot]-repeat; if(dir[robot]<1) dir[robot]+=4; } else if(action=='L') { dir[robot]=dir[robot]+repeat; if(dir[robot]>4) dir[robot]-=4; } } } if(tag==0) printf("OK\n"); } return 0; }
相关文章推荐
- Crashing Robots(POJ_2632)
- POJ 2632 Crashing Robots
- POJ2632 Crashing Robots
- POJ 2632--Crashing Robots
- POJ 2632 Crashing Robots
- poj 2632 Crashing Robots
- POJ 2632 Crashing Robots
- POJ 2632:Crashing Robots
- POJ:2632-Crashing Robots
- poj-2632 Crashing Robots
- Crashing Robots(POJ 2632)(模拟)
- POJ 2632:Crashing Robots
- POJ 2632 Crashing Robots
- Poj OpenJudge 百练 2632 Crashing Robots
- POJ2632——模拟——Crashing Robots
- 模拟 POJ 2632 Crashing Robots
- POJ2632《Crashing Robots》方法:模拟
- POJ2632——Crashing Robots
- poj-2632-Crashing Robots
- POJ2632——Crashing Robots