您的位置:首页 > 其它

poj 2632 模拟

2017-03-27 14:56 183 查看
按题意模拟就行///写了2个小时内心是崩溃的 还好1A

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: