poj 2632 模拟
2017-03-27 14:56
183 查看
按题意模拟就行///写了2个小时内心是崩溃的 还好1A
code:
code:
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <string> using namespace std; #define maxn 100005 int mapp[105][105]; struct P{ int x,y; int to;///0--N 1--E 2--S 3--W }my[105*105]; char str[22]; char op[22]; int main(){ int loop,n,a,b,m,tot,time,id; bool flag; scanf("%d",&loop); while(loop--){ scanf("%d%d",&a,&b); scanf("%d%d",&n,&m); memset(mapp,0,sizeof(mapp)); memset(my,0,sizeof(my)); for(int i=1;i<=n;++i){ int x,y; scanf("%d%d",&x,&y); mapp[x][y]=i; my[i].x=x; my[i].y=y; scanf("%s",str); switch (str[0]){ case 'N': my[i].to=0;break; case 'E': my[i].to=1;break; case 'S': my[i].to=2;break; case 'W': my[i].to=3;break; } } flag=true; for(int i=1;i<=m;++i){ scanf("%d%s%d",&id,op,&time); if(flag){ if(op[0]=='L') my[id].to=(my[id].to-time+time*4)%4; else if(op[0]=='R') my[id].to=(my[id].to+time)%4; else if(op[0]=='F'){ if(my[id].to==0){ int ff=0; for(int j=my[id].y+1;j<=my[id].y+time;++j){ if(mapp[my[id].x][j]){ int id2=mapp[my[id].x][j]; printf("Robot %d crashes into robot %d\n",id,id2); flag=false; ff=1; break; } else if(j>b){ printf("Robot %d crashes into the wall\n",id); flag=false; ff=1; break; } } if(ff==0){ mapp[my[id].x][my[id].y+time]=mapp[my[id].x][my[id].y]; mapp[my[id].x][my[id].y]=0; my[id].y+=time; } continue; } if(my[id].to==1){ int ff=0; for(int j=my[id].x+1;j<=my[id].x+time;++j){ if(mapp[j][my[id].y]){ int id2=mapp[j][my[id].y]; printf("Robot %d crashes into robot %d\n",id,id2); flag=false; ff=1; break; } else if(j>a){ printf("Robot %d crashes into the wall\n",id); flag=false; ff=1; break; } } if(ff==0){ mapp[my[id].x+time][my[id].y]=mapp[my[id].x][my[id].y]; mapp[my[id].x][my[id].y]=0; my[id].x+=time; } continue; } if(my[id].to==2){ int ff=0; for(int j=my[id].y-1;j>=my[id].y-time;--j){ if(mapp[my[id].x][j]){ int id2=mapp[my[id].x][j]; printf("Robot %d crashes into robot %d\n",id,id2); flag=false; ff=1; break; } else if(j<1){ printf("Robot %d crashes into the wall\n",id); flag=false; ff=1; break; } } if(ff==0){ mapp[my[id].x][my[id].y-time]=mapp[my[id].x][my[id].y]; mapp[my[id].x][my[id].y]=0; my[id].y-=time; } continue; } if(my[id].to==3){ int ff=0; for(int j=my[id].x-1;j>=my[id].x-time;--j){ if(mapp[j][my[id].y]){ int id2=mapp[j][my[id].y]; printf("Robot %d crashes into robot %d\n",id,id2); flag=false; ff=1; break; } else if(j<1){ printf("Robot %d crashes into the wall\n",id); flag=false; ff=1; break; } } if(ff==0){ mapp[my[id].x-time][my[id].y]=mapp[my[id].x][my[id].y]; mapp[my[id].x][my[id].y]=0; my[id].x-=time; } continue; } } } } if(flag)puts("OK"); } return 0; }
相关文章推荐
- POJ 2632 Crashing Robots (坑爹的模拟题)
- POJ 2632 Crashing Robots (坑爹的模拟题)
- (模拟)poj2632 Crashing Robots
- POJ 2632 模拟
- poj 2632 (模拟)
- 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(模拟)
- POJ 2632 Crashing Robots(模拟)
- poj 2632 Crashing Robots_模拟
- POJ 2632 Crashing Robots 模拟
- poj2632 Crashing Robots 模拟
- POJ2632 Crashing Robots(模拟)
- POJ2632——模拟——Crashing Robots
- poj 2632 Crashing Robots 模拟
- POJ 2632 Crashing Robots(模拟)