POJ 2632:Crashing Robots
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 8424 | Accepted: 3648 |
Description
space with a diameter of 1 meter. Assume there are N robots, numbered from 1 through N. You will get to know the position and orientation of each robot, and all the instructions, which are carefully (and mindlessly) followed by the robots. Instructions are
processed in the order they come. No two robots move simultaneously; a robot always completes its move before the next one starts moving.
A robot crashes with a wall if it attempts to move outside the area of the warehouse, and two robots crash with each other if they ever try to occupy the same spot.
Input
The second line contains two integers, 1 <= N, M <= 100, denoting the numbers of robots and instructions respectively.
Then follow N lines with two integers, 1 <= Xi <= A, 1 <= Yi <= B and one letter (N, S, E or W), giving the starting position and direction of each robot, in order from 1 through N. No two robots start at the same position.
Figure 1: The starting positions of the robots in the sample warehouse
Finally there are M lines, giving the instructions in sequential order.
An instruction has the following format:
< robot #> < action> < repeat>
Where is one of
- L: turn left 90 degrees,
- R: turn right 90 degrees, or
- F: move forward one meter,
and 1 <= < repeat> <= 100 is the number of times the robot should perform this single move.
Output
- Robot i crashes into the wall, if robot i crashes into a wall. (A robot crashes into a wall if Xi = 0, Xi = A + 1, Yi = 0 or Yi = B + 1.)
- Robot i crashes into robot j, if robots i and j crash, and i is the moving robot.
- OK, if no crashing occurs.
Only the first crash is to be reported.
Sample Input
4
5 4
2 2
1 1 E
5 4 W
1 F 7
2 F 7
5 4
2 4
1 1 E
5 4 W
1 F 3
2 F 1
1 L 1
1 F 3
5 4
2 2
1 1 E
5 4 W
1 L 96
1 F 2
5 4
2 3
1 1 E
5 4 W
1 F 4
1 L 1
1 F 20
Sample Output
Robot 1 crashes into the wall
Robot 1 crashes into robot 2
OK
Robot 1 crashes into robot 2
题意是给定一个坐标地图,给了很多个机器人的坐标和方向,有三种对机器人的操作方式,F是前进,L是向左转,R向右转。看哪一个机器人先撞墙或是撞到其他机器人。
自己需要注意两点:
1.不一定非得到操作机器人的时候才有冲突,可能在最开始的机器人拜访过程中机器人站的位置就已经重复,即冲突了。
2.R向右转,自己定义成为-1,原来自己以为负数除以数的余数会是正数,结果自己too naive了,要考虑将其变为正数。
这个题自己就注意这两点就够了,因为本身就是一个模拟的过程,跟算法也没什么关系。。。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#pragma warning(disable:4996)
using namespace std; struct R
{
int x;
int y;
int dir;
}Robot[110]; enum{ E,N,W,S };
enum{ L=1,R=-1};
int map_f[200][200];
int move_x[5]={1,0,-1,0};
int move_y[5]={0,1,0,-1};
int Test,X,Y,Robot_n,Q,i,flag;
string temp; void solve()
{
int cal_n,cishu,k;
string manu;
cin>>cal_n>>manu>>cishu; if(flag==0)
return; if(manu=="F")
{
map_f[Robot[cal_n].x][Robot[cal_n].y]=0; for(k=1;k<=cishu;k++)
{
Robot[cal_n].x = Robot[cal_n].x + move_x[Robot[cal_n].dir];
Robot[cal_n].y = Robot[cal_n].y + move_y[Robot[cal_n].dir]; if(Robot[cal_n].x <=0 || Robot[cal_n].y <=0 || Robot[cal_n].x >X || Robot[cal_n].y >Y)
{
flag=0;
cout<<"Robot "<<cal_n<<" crashes into the wall"<<endl;
break;
}
else if(map_f[Robot[cal_n].x][Robot[cal_n].y])
{
flag=0;
cout<<"Robot "<<cal_n<<" crashes into robot "<<map_f[Robot[cal_n].x][Robot[cal_n].y]<<endl;
break;
}
}
map_f[Robot[cal_n].x][Robot[cal_n].y]=cal_n;
}
else if(manu=="L")
{
Robot[cal_n].dir = (Robot[cal_n].dir + L*cishu)%4;
}
else if(manu=="R")
{
Robot[cal_n].dir = (Robot[cal_n].dir + (R*cishu)%4 + 4)%4;
}
} int main()
{
cin>>Test; while(Test--)
{
flag=1;
memset(map_f,0,sizeof(map_f)); cin>>X>>Y;
cin>>Robot_n>>Q; for(i=1;i<=Robot_n;i++)
{
cin>>Robot[i].x>>Robot[i].y;
if(map_f[Robot[i].x][Robot[i].y])
{
flag=0;
cout<<"Robot "<<i<<" crashes into robot "<<map_f[Robot[i].x][Robot[i].y]<<endl;
}
else
{
map_f[Robot[i].x][Robot[i].y]=i;
} cin>>temp;
if(temp=="E")
Robot[i].dir=E;
else if(temp=="N")
Robot[i].dir=N;
else if(temp=="W")
Robot[i].dir=W;
else if(temp=="S")
Robot[i].dir=S;
}
for(i=1;i<=Q;i++)
{
solve();
}
if(flag)
cout<<"OK"<<endl;
}
//system("pause");
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
POJ 2632:Crashing Robots的更多相关文章
- 模拟 POJ 2632 Crashing Robots
题目地址:http://poj.org/problem?id=2632 /* 题意:几个机器人按照指示,逐个朝某个(指定)方向的直走,如果走过的路上有机器人则输出谁撞到:如果走出界了,输出谁出界 如果 ...
- Poj OpenJudge 百练 2632 Crashing Robots
1.Link: http://poj.org/problem?id=2632 http://bailian.openjudge.cn/practice/2632/ 2.Content: Crashin ...
- POJ 2632 Crashing Robots (坑爹的模拟题)
Crashing Robots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6599 Accepted: 2854 D ...
- Crashing Robots 分类: POJ 2015-06-29 11:44 10人阅读 评论(0) 收藏
Crashing Robots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8340 Accepted: 3607 D ...
- poj 2632 Crashing Robots(模拟)
链接:poj 2632 题意:在n*m的房间有num个机器,它们的坐标和方向已知,现给定一些指令及机器k运行的次数, L代表机器方向向左旋转90°,R代表机器方向向右旋转90°,F表示前进,每次前进一 ...
- poj 2632 Crashing Robots
点击打开链接 Crashing Robots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6655 Accepted: ...
- POJ:2632-Crashing Robots
Crashing Robots Time Limit: 1000MS Memory Limit: 65536K Description In a modernized warehouse, robot ...
- 模拟 --- Crashing Robots
Crashing Robots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7394 Accepted: 3242 D ...
- poj2632 Crashing Robots
Crashing Robots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9859 Accepted: 4209 D ...
随机推荐
- MariaDB——日志文件
数据库各类日志 查询日志: 记录每一条sql语句,建议不开启,因为如果访问量过大,会占用相当大的资源,影响数据库的性能. vim /etc/my.cnf.d/server.cnf g ...
- 学习笔记:中国剩余定理(CRT)
引入 常想起在空间里见过的一些智力题,这个题你见过吗: 一堆苹果,\(3\)个\(3\)个地取剩\(1\)个,\(5\)个\(5\)个地取剩\(1\)个,\(7\)个\(7\)个地取剩\(2\)个,苹 ...
- 《算法图解》[美] Aditya Bhargava(作者)epub+mobi
内容简介 本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量.书中的前三章将帮助你打下基础,带你学习二分查找.大O表示法.两种基本的数据结构以及递归 ...
- 搭建solr集群的时候出现 ./zkcli.sh:行13: unzip: 未找到命令
主要的原因是: linux系统下面没有安装压缩解压工具 zip 和 unzip:需要我们自己手动的安装: 利用yum命令安装即可: yum install -y unzip zip
- BugFix系列---开篇介绍
这个系列的文章,主要目的在于积累总结实际开发中遇到的错误,记录下来自己的解决思路,用来提升自己. 不出意外,应该会持续不断的记录更新,在整个开发openstack的过程中,抓住机会吸取开源界大牛的 ...
- spring bean容器学习
bean是Spring种最核心的东西 ,如果说Spring是个水桶的话,bean就是桶里面的水,桶里面没有水也就没有意义了. public class MyTestBean { private Str ...
- 第1节 HUE:13、hue的下载以及安装配置
hue的基本介绍:主要是用于与其他各个框架做整合的,提供一个web界面可以供我们去操作其他的大数据框架可以理解为这个hue就是一个与其他各个框架整合的工具,hue本身不提供任何的功能,所有的功能,都是 ...
- chromedriver版本问题
最新的chromedriver 66.0.3359.117 的对应chromedriver版本为2.38 http://npm.taobao.org/mirrors/chromedriver/ Web ...
- PHPXhprof扩展在windows安装
1.下载在这里 http://dev.freshsite.pl/php-extensions/xhprof.html.(找不到资源可以私我我给你,这个上传不了资源) 注意:一定要找对应的php版本,t ...
- 最小生成树的两种方法(Kruskal算法和Prim算法)
关于图的几个概念定义: 连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图. 强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该有向图为强连 ...