poj2632 累死了

题意:

给定A*B的格子,放入N个机器人,每个机器人初始位置及朝向给定。给定M条指令。指令类型有三种:

1、L:左转90°      2、R:右转90°       3、F:前进一格

问执行指令过程中机器人是否发生碰撞,碰撞包括碰墙或碰其他机器人。安全执行完所有指令输出OK。(程序只需输出发生的第一次碰撞)

第一发我定义了一个cnate[20000][20000]直接空间爆炸

第二发不知道走过的路径中碰到机器人的话也算碰撞

第三发到第五发坐标建立错误(看图就知道了) 最后实在不知道了就看了下别人的题解...

最后总结一下:这种模拟题一定要根据题目意思来,题目是什么就怎么模拟,唉,可怜我这种英语渣渣。

这道题前前后后做了四个小时...

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 const int maxn = 100 + 10;
 5 int cnate[maxn][maxn];
 6 int dx[] = {0,1,0,-1};
 7 int dy[] = {1,0,-1,0};
 8 int zhuang=0,beizhuang=0;
 9 char s[5];
10 using namespace std;
11 struct Robots{
12     int x,y,d;
13 }r[maxn];
14 int main()
15 {
16     int n,m,e=0,flag;
17     int t;int a,b;
18     scanf("%d",&t);getchar();
19     while(t--){
20         flag=0;
21         memset(cnate,0,sizeof(cnate));
22         scanf("%d %d",&a,&b);scanf("%d %d",&n,&m);
23         for(int i=1;i<=n;i++){
24             scanf("%d %d",&r[i].x,&r[i].y);
25             scanf("%s",s);cnate[r[i].y][r[i].x]=i;  //就是这里,建立坐标
26             switch(s[0]){
27                 case ‘N‘:r[i].d=0;break;
28                 case ‘E‘:r[i].d=1;break;
29                 case ‘S‘:r[i].d=2;break;
30                 case ‘W‘:r[i].d=3;break;
31             }
32         }
33         char act[3];int num,rep;
34         while(m--){
35             scanf("%d %s %d",&num,act,&rep);
36             if(!flag){
37                 if(act[0]==‘L‘)    r[num].d=((r[num].d-rep)%4+4)%4;
38                 else if(act[0]==‘R‘)    r[num].d=(r[num].d+rep)%4;
39                 else{
40                     cnate[r[num].y][r[num].x] = 0;
41                     for(int i=0;i<rep;++i){
42                         r[num].x+=dx[r[num].d];
43                         r[num].y+=dy[r[num].d];
44                         if(r[num].x<=0||r[num].x>a||r[num].y<=0||r[num].y>b){
45                             zhuang=num;flag=1;break;
46                         }
47                         else if(cnate[r[num].y][r[num].x]){
48                             zhuang=num;beizhuang=cnate[r[num].y][r[num].x];
49                             flag=2;break;
50                         }
51                     }
52                     if(!flag)    cnate[r[num].y][r[num].x] = num;
53                 }
54             }
55         }
56         if(flag==1)    printf("Robot %d crashes into the wall\n", zhuang);
57         else if(flag==2)    printf("Robot %d crashes into robot %d\n", zhuang, beizhuang);
58         else    printf("OK\n");
59     }
60     return 0;
61 }
时间: 2024-09-30 11:23:43

poj2632 累死了的相关文章

poj2632

概述: 因为网络上关于这个JXTA-C源码编译的文章较少,所以我在此首先写一份编译的完整过程,以供网友们参考. JXTA-C源码所在地址:http://download.java.net/jxta/ 1.操作系统环境 [email protected]:~$ cat /etc/issue Ubuntu 12.04.4 LTS \n \l [email protected]:~$ file /bin/ls /bin/ls: ELF 32-bit LSB executable, Intel 8038

为什么有些人加班累死还不如有些人轻轻松松赚钱多(续)

真相总是如此残酷 多年以来总是认为 一个人只要努力就肯定有收获,或者收益不菲 但是现实总是把自己打脸,之前曾写过<为什么有些人加班累死还不如有些人轻轻松松赚钱多> 结论总感觉总结不到位,今天正好看到雷军的顺势而为,突然醒悟, 所谓的本质! 取势优术 据说这是李嘉诚的名言. 我可以这样理解 势:大行业的前景 术:个人的方法论 举证: 第一: 记得2010年刚工作,在一家创业公司做手机视频直播业务, 对你没有看错,2010年 iphone4s 还没有诞生,wifi还没有普及,小米手机还没有生产的时

POJ2632——Crashing Robots

Crashing Robots DescriptionIn a modernized warehouse, robots are used to fetch the goods. Careful planning is needed to ensure that the robots reach their destinations without crashing into each other. Of course, all warehouses are rectangular, and a

hadoop多次搭建后,完整总结(累死宝宝了,搭建了十多遍了)

1.安装JDK1.1上传运用软件FileZilla,将windows上的jdk压缩包放到linux的root目录下 1.2解压jdk #创建文件夹 mkdir /usr/java(不要挂在在"/"系统盘下) #解压 tar -zxvf jdk-7u55-linux-i586.tar.gz -C /usr/java/(提前在/usr/目录下创建一个java的文件夹) 1.3将java添加到环境变量中 vim /etc/profile #在文件最后添加 export JAVA_HOME=/

htop/dstat/top/ps命令的使用(一堆图片,累死我了)

要对进程进行监测和控 制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps 命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态.进程是否结束.进程有没有僵死.哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到的. ps为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具. PS命令使用: 1.ps命令:进程状态查看命令 /proc/:内核中的状态信息: (1).内核

常量、变量、数据类型 搞错N+1次 累死

public class hello { /** * * * * * @param args */ public static void main(String[] args) { String _$dd123 ="";//定义变量 int i; i=123;//分号要注意是英文分号 int m=1,n=2,x=4,y=5;//最好分开写 final double PAI = 3.14; //常量赋值一次,后面不能更改,常量名一般全大写 //pai = 3.1415926;i=ddd;

百度哈佛可骄傲和伤口恢复快累死了放假了;是

http://www.ebay.com/cln/bcn1558/cars/167443910011/2015_02_02 http://www.ebay.com/cln/x-me385/cars/167416676016/2015_02_02 http://www.ebay.com/cln/w-x1267/cars/167457939013/2015_02_02 http://www.ebay.com/cln/pga8880/cars/167263206018/2015_02_02 http:/

poj2632(Crashing Robots)

题目大意: 一个仓库有N个机器人在移动,仓库的大小为A,B.会有M次操作,(E,W,S,N)分别代表东西南北,机器人在仓库里会有三种情况:1.正在移动的机器人i撞墙.2.正在移动的机器人i遇见机器人j.3.所有机器人没发生任何意外(OK).根据操作,输出可能的结果. 数据分析 4 //代表几组测试案例 5 4 //代表仓库的大小 2 2  //代表有两个机器人进行两次操作    1 1 E  //代表第一个机器人的位置和方向    5 4 W //代表第二个机器人的位置和方向    1 F 7

写个烂android一天到晚活累死,

!