#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<cmath>
using namespace std;
#define INF 0x3f3f3f3f
int dir[5][2] = {{0,0},{0,1},{-1,0},{0,-1},{1,0}};
struct robot{
    int x,y;
    int face;
}r[105];//1 N ,3 S, 2 W, 4 E
int map[105][105];
int main(){
   int t,a,b,n,m;
    scanf("%d",&t);
    while(t--){
        memset(map,0,sizeof(map));
        scanf("%d%d",&a,&b);
       scanf("%d%d",&n,&m);
       char tmp;
        for (int i = 1; i <= n; i++)
       {
         scanf("%d %d %c",&r[i].x,&r[i].y,&tmp);
            map[r[i].x][r[i].y] = i;
          if(tmp == 'N')r[i].face = 1;
           else if(tmp == 'S')r[i].face = 3;
            else if(tmp == 'W')r[i].face = 2;
           else if(tmp == 'E')r[i].face = 4;
      }
        int ind,rep,flag = 0;
        for (int i = 1; i <= m; i++)
        {
            scanf("%d %c %d",&ind,&tmp,&rep);
            if(flag){continue;}
            if(tmp == 'L'){
                for (int k = 0; k < rep; k++)
                {
                    if(r[ind].face == 4)r[ind].face = 1;
                   else r[ind].face ++;
                }
           }else if(tmp == 'R'){
                for (int k = 0; k < rep; k++)
               {
                    if(r[ind].face == 1)r[ind].face = 4;
                    else r[ind].face --;
                }
           }
		   else if(tmp == 'F')
		   {
                map[r[ind].x][r[ind].y] = 0;
               for (int k = 0; k < rep; k++)
               {
                    r[ind].x += dir[r[ind].face][0];
                    r[ind].y += dir[r[ind].face][1];
                   if(r[ind].x < 1 || r[ind].x > a){flag = 1;break;}
                   if(r[ind].y < 1 || r[ind].y > b){flag = 1;break;}
                  if(map[r[ind].x][r[ind].y]!=0){
                        flag = 2;
                        printf("Robot %d crashes into robot %d\n",ind,map[r[ind].x][r[ind].y]);
                        break;
                   }
                }
               if(flag == 1)printf("Robot %d crashes into the wall\n",ind);
                if(flag == 0)map[r[ind].x][r[ind].y] = ind;
           }
        }
        if(flag == 0)printf("OK\n");
    }
    return 0;
}

POJ2632的更多相关文章

  1. POJ-2632 Crashing Robots模拟

    题目链接: https://vjudge.net/problem/POJ-2632 题目大意: 在一个a×b的仓库里有n个机器人,编号为1到n.现在给出每一个机器人的坐标和它所面朝的方向,以及m条指令 ...

  2. poj2632 Crashing Robots

    Crashing Robots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9859   Accepted: 4209 D ...

  3. poj2632 模拟

    Crashing Robots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8388   Accepted: 3631 D ...

  4. POJ2632——Crashing Robots

    Crashing Robots DescriptionIn a modernized warehouse, robots are used to fetch the goods. Careful pl ...

  5. POJ2632 Crashing Robots(模拟)

    题目链接. 分析: 虽说是简单的模拟,却调试了很长时间. 调试这么长时间总结来的经验: 1.坐标系要和题目建的一样,要不就会有各种麻烦. 2.在向前移动过程中碰到其他的机器人也不行,这个题目说啦:a ...

  6. poj2632 【模拟】

    In a modernized warehouse, robots are used to fetch the goods. Careful planning is needed to ensure ...

  7. 快速切题 poj2632

    Crashing Robots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7799   Accepted: 3388 D ...

  8. POJ2632 Crashing Robots 解题报告

    Description In a modernized warehouse, robots are used to fetch the goods. Careful planning is neede ...

  9. 【POJ2632】Crashing Robots

    题目传送门 本题知识点:模拟 模拟机器人的运作过程,分别有三种功能,L 则是左转90°,R 则是右转90°,L 则是前进1格.让我们去模拟并判断它们的状态. 输入: 第一行是测试样例 第二行分别是矩形 ...

随机推荐

  1. FileInputStream、FileReader、FileInputStream、FileWriter使用小结

    本文是基于Linux环境运行,读者阅读前需要具备一定Linux知识 InputStream包含如下三个方法: int read():从输入流中读取单个字节,返回所读取的字节数据(字节数据可直接转化为i ...

  2. 大型网站一致性的基础理论---CAP/BASE

    最近在看<大型网站系统与java中间件事件>这本书,收获颇多. 分布式事务希望在多机环境下可以像单机系统那样做到强一致,这需要付出比较大的代价.而在有些场景下,接受状态并不用时刻保持一致, ...

  3. 使用scala开发spark入门总结

    使用scala开发spark入门总结 一.spark简单介绍 关于spark的介绍网上有很多,可以自行百度和google,这里只做简单介绍.推荐简单介绍连接:http://blog.jobbole.c ...

  4. zTree入门-最简单的树

    最近发现项目中很多地方都是树形菜单,而这些树形菜单都是使用树形插件zTree来制作的,所以就想自学一下zTree,参照官方文档写了一个简单的案例,使用zTree做了 一个最简单的树形结构. 案例:zT ...

  5. Python爬虫个人梳理(代码有空写)

    这里多是摘抄的,只是用于个人理解. 1.urlopen().read()是爬取网页的内容,出来可能是一堆的源代码.和我们右击网页查看是一样的. 2.当用到http请求的时候,我们可以使用Request ...

  6. 为什么C#中应该用Try-Catch?

    [为什么C#中应该用Try-Catch?] http://blog.csdn.net/dier4836/article/details/7292897

  7. Java中Map集合的四种访问方式(转)

    最近学习Java发现集合类型真是很多,访问方式也很灵活,在网上找的方法,先放下备用 public static void main(String[] args) { Map<String, St ...

  8. Mysql Communication link failure :1153 Got a packet bigger than 'max_allowed_packet' bytes

    出现这种情况: 临时解决方法是: 登录mysql: 执行: set global max_allowed_packet=1000000000;       set global net_buffer_ ...

  9. Python os模块之文件操作

    基本概念:C:\\haoguo.txt 路径: C:\\ 文件名: haoguo 后缀名:.txt 1. 文件名与后缀分离 2. 路径与文件分离 3. 获取当前路径 4. 文件名与后缀合并 5. 路径 ...

  10. java环境基础步骤 jdk tomcat eclipse

    1.下载jdk,安装jdk 2.设置环境变量 1)打开我的电脑--属性--高级--环境变量 2)系统变量→新建 JAVA_HOME 变量 变量值填写jdk的安装目录(本人是 D:\java\jdk1. ...