Crashing Robots(imitate)
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 8124 | Accepted: 3528 |
Description
Input

- 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
Source
- #include<stdio.h>
- #include<iostream>
- #include<math.h>
- #include<string.h>
- using namespace std;
- struct robot
- {
- int x , y ;
- int dir ;
- }a[];
- struct instruction
- {
- int num ;
- char act ;
- int rep ;
- }ins[];
- int EW , NS ;
- int n , m ;
- bool flag ;
- int map[][];
- void crash (int No)
- {
- int k = ins[No].rep ;
- int t = ins[No].num ;
- map[a[t].x][a[t].y] = ;
- switch (a[t].dir)
- {
- case :
- for (int i = ; i < k && a[t].x && a[t].y ; i++)
- if (map[a[t].x][++a[t].y]) {
- flag = ;
- printf ("Robot %d crashes into robot %d\n" , t , map[a[t].x][a[t].y]) ;
- break ;
- }
- break ;
- case :
- for (int i = ; i < k && a[t].x && a[t].y ; i++)
- if (map[++a[t].x][a[t].y]) {
- flag = ;
- printf ("Robot %d crashes into robot %d\n" , t , map[a[t].x][a[t].y]) ;
- break ;
- }
- break ;
- case :
- for (int i = ; i < k && a[t].x && a[t].y ; i++)
- if (map[a[t].x][--a[t].y]) {
- flag = ;
- printf ("Robot %d crashes into robot %d\n" , t , map[a[t].x][a[t].y]) ;
- break ;
- }
- break ;
- case :
- for (int i = ; i < k && a[t].x && a[t].y; i++)
- if (map[--a[t].x][a[t].y]) {
- flag = ;
- printf ("Robot %d crashes into robot %d\n" , t , map[a[t].x][a[t].y]) ;
- break ;
- }
- break ;
- }
- map[a[t].x][a[t].y] = t ;
- if (a[t].x == || a[t].x >= EW + || a[t].y == || a[t].y >= NS + ) {
- printf ("Robot %d crashes into the wall\n" , t) ;
- flag = ;
- }
- }
- void solve (int No)
- {
- int k = ins[No].num ;
- switch (ins[No].act)
- {
- case 'L' : a[k].dir -= ins[No].rep ; a[k].dir %= ; a[k].dir += ; a[k].dir %= ; break ;
- case 'R' : a[k].dir += ins[No].rep ; a[k].dir %= ; a[k].dir += ; a[k].dir %= ; break ;
- case 'F' : crash (No) ;
- }
- }
- int main ()
- {
- // freopen ("a.txt" , "r" , stdin) ;
- int T ;
- scanf ("%d" , &T) ;
- char temp ;
- while (T--) {
- memset (map , , sizeof(map) ) ;
- scanf ("%d%d" , &EW , &NS) ;
- scanf ("%d%d" , &n , &m) ;
- for (int i = ; i <= n ; i++) {
- cin >> a[i].x >> a[i].y >> temp ;
- // cout << temp <<endl ;
- map[a[i].x][a[i].y] = i ;
- switch (temp)
- {
- case 'E' : a[i].dir = ; break ;
- case 'S' : a[i].dir = ; break ;
- case 'W' : a[i].dir = ; break ;
- case 'N' : a[i].dir = ; break ;
- }
- // printf ("a[%d].dir=%d\n" , i , a[i].dir) ;
- }
- for (int i = ; i < m ; i++)
- cin >> ins[i].num >> ins[i].act >> ins[i].rep ;
- flag = ;
- // printf ("a[1].dir=%d\n" , a[1].dir) ;
- for (int i = ; i < m ; i++) {
- /* for (int i = 1 ; i <= EW ; i++) {
- for (int j = 1 ; j <= NS ; j++) {
- printf ("%d " , map[i][j]) ;
- }
- puts("");
- }
- puts ("") ;*/
- solve (i) ;
- /* for (int i = 1 ; i <= EW ; i++) {
- for (int j = 1 ; j <= NS ; j++) {
- printf ("%d " , map[i][j]) ;
- }
- puts("");
- }
- printf ("\n\n\n") ; */
- if (flag)
- break ;
- }
- if (!flag)
- puts ("OK") ;
- }
- return ;
- }
规规矩矩得模拟 robot 一步步走就行了
Crashing Robots(imitate)的更多相关文章
- POJ2632 Crashing Robots(模拟)
题目链接. 分析: 虽说是简单的模拟,却调试了很长时间. 调试这么长时间总结来的经验: 1.坐标系要和题目建的一样,要不就会有各种麻烦. 2.在向前移动过程中碰到其他的机器人也不行,这个题目说啦:a ...
- poj 2632 Crashing Robots(模拟)
链接:poj 2632 题意:在n*m的房间有num个机器,它们的坐标和方向已知,现给定一些指令及机器k运行的次数, L代表机器方向向左旋转90°,R代表机器方向向右旋转90°,F表示前进,每次前进一 ...
- Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round) A. Contest for Robots(数学)
题意: n 道题,2 个答题者,已知二者的做题情况,你是受贿裁判,可以给每题指定分值(≥1),求甲乙分数(甲>乙)相差最小时最大分值的最小值. 思路: 统计只有甲或乙做出的题目数. 加一取下整判 ...
- POJ 2632 Crashing Robots(较为繁琐的模拟)
题目链接:http://poj.org/problem?id=2632 题目大意:题意简单,N个机器人在一个A*B的网格上运动,告诉你机器人的起始位置和对它的具体操作,输出结果: 1.Robot i ...
- ZOJ 1654 Place the Robots(最大匹配)
Robert is a famous engineer. One day he was given a task by his boss. The background of the task was ...
- [AGC004E] Salvage Robots (DP)
Description 蛤蟆国的领土我们可以抽象为H*W的笼子,在这片蛤土上,有若干个机器人和一个出口,其余都是空地,每次蛤蟆会要求让所有的机器人向某个方向移动一步,当机器人移动到出口时会被蛤蟆活摘出 ...
- 【ZOJ1003】Crashing Balloon(DFS)
Crashing Balloon Time Limit: 2 Seconds Memory Limit: 65536 KB On every June 1st, the Children's ...
- UVALive 7464 Robots (贪心)
Robots 题目链接: http://acm.hust.edu.cn/vjudge/contest/127401#problem/K Description http://7xjob4.com1.z ...
- UVALive 7464 Robots(模拟)
7464Robots Write a program to collect data from robots. We are given two sets of robotsX=fX1;:::;Xmg ...
随机推荐
- Scala之Map,Tuple
/** * 1,默认情况下Map构造的是不可变的集合,里面的内容不可修改,一旦修改就变成新的Map,原有的Map内容保持不变: * 2,Map的实例是调用工厂方法模式apply来构造Map实例,而需要 ...
- 云计算之路-阿里云上:2014年6月12日12点IIS请求到达量突降
今天中午12:00左右,在Windows性能监视器中突然发现SLB中的两台云服务器的IIS请求到达量(ArriveRate)突然下降,见下图: IIS日志中的情况如下: 综合以上情况,我们推测在12: ...
- json和cookie兼容以前的
'json': function(data) { try { if (typeof data === "string") { if (typeof JSON != 'undefin ...
- [USACO2005][POJ2228]Naptime(对特殊环状DP的处理)
题目:http://poj.org/problem?id=2228 题意:将一天分为N小时,每小时都有一个价值w,有一头牛要睡觉,而它的睡觉是连续的,且第一小时不能算价值,即如果你睡了[a,b],则你 ...
- [USACO 1.5.4]checker(水题重做——位运算(lowbit的应用))
描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 0 1 2 3 4 5 6 ------- ...
- 《TCP/IP详解卷1:协议》第6章 ICMP:Internet控制报文协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- opencv笔记4:模板运算和常见滤波操作
time:2015年10月04日 星期日 00时00分27秒 # opencv笔记4:模板运算和常见滤波操作 这一篇主要是学习模板运算,了解各种模板运算的运算过程和分类,理论方面主要参考<图像工 ...
- NOIP2013 货车运输 (最大生成树+树上倍增LCA)
死磕一道题,中间发现倍增还是掌握的不熟 ,而且深刻理解:SB错误毁一生,憋了近2个小时才调对,不过还好一遍AC省了更多的事,不然我一定会疯掉的... 3287 货车运输 2013年NOIP全国联赛提高 ...
- 【poj2773】 Happy 2006
http://poj.org/problem?id=2773 (题目链接) 题意 给出两个数m,k,要求求出从1开始与m互质的第k个数. Solution 数据范围很大,直接模拟显然是不行的,我们需要 ...
- 洛谷P2024 食物链
挺神奇 题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种 ...