poj 2632 Crashing Robots

来源:互联网 发布:劳丽诗的淘宝店 编辑:程序博客网 时间:2024/05/17 01:15

坑了,没想的太周到,WA好久,

就两个地方想错了。。

一。对撞在撞墙之前,

二。对撞的是最靠近要动的这个的,

写的是按编号顺序判断。。。心碎了

模拟太坑爹。。。哭哭哭哭

#include<stdio.h>#include<string.h>#include<iostream>using namespace std;char qq[105];int a,s[105][2],b,c,t[3];int d,e;int k,l,h,m,n;void show(int q,char w,int e){    h=0;    int nb=1002;    if(w=='F')    {       if(qq[q]=='E')        {s[q][0]+=e;        if(s[q][0]>b)            {h=1;k=q;}        for(int i=1;i<=m;i++)        {            if(q==i)                continue;            if(s[q][1]==s[i][1]&&s[i][0]<=s[q][0]&&s[q][0]-e<s[i][0])               {                   int uu=e-s[q][0]+s[i][0];                   if(uu<nb)                    {                       nb=uu;                        k=q;l=i;                      t[1]=1;}               }        }        }        if(qq[q]=='W')        {            s[q][0]-=e;            if(s[q][0]<=0)                {h=1;k=q;}        for(int i=1;i<=m;i++)        {            if(q==i)                continue;            if(s[q][1]==s[i][1]&&s[i][0]>=s[q][0]&&s[q][0]+e>s[i][0])               {int uu=e+s[q][0]-s[i][0];                   if(uu<nb)                    {                         nb=uu;                        k=q;l=i;                      t[1]=1;}               }        }        }        if(qq[q]=='S')        {            s[q][1]-=e;            if(s[q][1]<=0)               {                   h=1;k=q;}            for(int i=1;i<=m;i++)           {            if(q==i)                continue;            if(s[q][0]==s[i][0]&&s[i][1]>=s[q][1]&&s[q][1]+e>s[i][1])               {                   int uu=e+s[q][1]-s[i][1];                   if(uu<nb)                    {                         nb=uu;                        k=q;l=i;                      t[1]=1;}               }        }        }        if(qq[q]=='N')        {            s[q][1]+=e;            if(s[q][1]>c)                {h=1;k=q;}            for(int i=1;i<=m;i++)           {            if(q==i)                continue;            if(s[q][0]==s[i][0]&&s[i][1]<=s[q][1]&&s[q][1]-e<s[i][1])               {                int uu=e-s[q][1]+s[i][1];                   if(uu<nb)                    {                         nb=uu;                        k=q;l=i;                      t[1]=1;}               }        }        }        if(h==1)           {t[0]=1;}       }    int u=0,p=0;    if(w=='L')        u=e%4;    if(w=='R')        p=e%4;        if(u==1||p==3)        {        if(qq[q]=='E')        {            qq[q]='N';        }        else        if(qq[q]=='W')        {            qq[q]='S';        }        else        if(qq[q]=='S')        {            qq[q]='E';        }        else        if(qq[q]=='N')        {           qq[q]='W';        }        }        if(u==2||p==2)        {        if(qq[q]=='E')        {            qq[q]='W';        }        else        if(qq[q]=='W')        {            qq[q]='E';        }        else        if(qq[q]=='S')        {            qq[q]='N';        }        else        if(qq[q]=='N')        {           qq[q]='S';        }        }        if(u==3||p==1)        {        if(qq[q]=='E')        {            qq[q]='S';        }        else        if(qq[q]=='W')        {            qq[q]='N';        }        else        if(qq[q]=='S')        {            qq[q]='W';        }        else        if(qq[q]=='N')        {           qq[q]='E';        }        }}int main(){    scanf("%d",&a);    while(a--)    {        memset(t,0,sizeof(t));        memset(s,0,sizeof(s));        scanf("%d %d",&b,&c);        char r;        k=0,l=0;        scanf("%d %d",&m,&n);        for(int i=1;i<=m;i++)        {            scanf("%d %d %c",&d,&e,&r);            s[i][0]=d;            s[i][1]=e;            qq[i]=r;            //printf("%d\n",s[i][1]);        }        for(int i=1;i<=n;i++)        {            scanf("%d %c %d",&d,&r,&e);            if(t[0]!=0||t[1]!=0)                continue;            show(d,r,e);        }        if(t[1]==1)        printf("Robot %d crashes into robot %d\n",k,l);        else        {if(t[0]==1)            printf("Robot %d crashes into the wall\n",k);        else            printf("OK\n");        }    }    return 0;}


0 0
原创粉丝点击