zoukankan      html  css  js  c++  java
  • POJ2632 Crashing Robots 模拟水题

      题目链接:http://poj.org/problem?id=2632

      模拟水题,直接循环判定即可。

     1 //STATUS:C++_AC_0MS_212KB
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 #include<string.h>
     5 #include<math.h>
     6 #include<iostream>
     7 #include<string>
     8 #include<algorithm>
     9 #include<vector>
    10 #include<queue>
    11 #include<stack>
    12 #include<map>
    13 using namespace std;
    14 #define LL __int64
    15 #define pii pair<int,int>
    16 #define Max(a,b) ((a)>(b)?(a):(b))
    17 #define Min(a,b) ((a)<(b)?(a):(b))
    18 #define mem(a,b) memset(a,b,sizeof(a))
    19 #define lson l,mid,rt<<1
    20 #define rson mid+1,r,rt<<1|1
    21 const int MAX=110,INF=0x3f3f3f3f,MOD=1999997;
    22 const LL LLNF=0x3f3f3f3f3f3f3f3fLL;
    23 
    24 struct Node{
    25     int x,y,r;
    26 }nod[MAX];
    27 
    28 int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
    29 char ma[128];
    30 int g[MAX][MAX];
    31 int T,w,h,n,m,ans1,ans2;
    32 
    33 int main()
    34 {
    35  //   freopen("in.txt","r",stdin);
    36     int i,j,a,b,ans,dir,nx,ny;
    37     char s[2];
    38     ma['N']=0,ma['E']=1,ma['S']=2,ma['W']=3;
    39     scanf("%d",&T);
    40     while(T--){
    41         ans=0;
    42         mem(g,0);
    43         scanf("%d%d%d%d",&w,&h,&n,&m);
    44         for(i=1;i<=n;i++){
    45             scanf("%d%d%s",&nod[i].x,&nod[i].y,s);
    46             g[nod[i].x][nod[i].y]=i;
    47             nod[i].r=ma[s[0]];
    48         }
    49         for(i=0;i<m;i++){
    50             scanf("%d%s%d",&a,s,&b);
    51             if(s[0]=='F'){
    52                 dir=nod[a].r;
    53                 while(b--){
    54                     nx=nod[a].x+dx[dir];
    55                     ny=nod[a].y+dy[dir];
    56                     if(nx<1 || nx>w || ny<1 || ny>h){
    57                         ans=1;ans1=a;
    58                         break;
    59                     }
    60                     if(g[nx][ny]){
    61                         ans=2;ans1=a;ans2=g[nx][ny];
    62                         break;
    63                     }
    64                     g[nod[a].x][nod[a].y]=0;
    65                     g[nx][ny]=a;
    66                     nod[a].x=nx,nod[a].y=ny;
    67                 }
    68             }
    69             else if(s[0]=='L')
    70                 nod[a].r=(nod[a].r-b%4+4)%4;
    71             else nod[a].r=(nod[a].r+b)%4;
    72             if(ans)break;
    73         }
    74         for(i++;i<m;i++)
    75             scanf("%d%s%d",&a,s,&b);
    76 
    77         if(!ans)printf("OK\n");
    78         else if(ans==1)printf("Robot %d crashes into the wall\n",ans1);
    79         else printf("Robot %d crashes into robot %d\n",ans1,ans2);
    80     }
    81     return 0;
    82 }
  • 相关阅读:
    紫书 例题8-18 UVa 1442 (扫描法)
    紫书 例题8-17 UVa 1609 (构造法)(详细注释)
    紫书 例题8-16 UVa 1608 (递归)
    紫书 例题8-15 UVa 12174 (滑动窗口)
    紫书 例题8-14 UVa 1607 (二分)
    紫书 例题8-13 UVa 11093 (反证法)
    紫书 例题8-12 UVa 12627 (找规律 + 递归)
    Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)
    CodeForces
    CodeForces 444C 线段树
  • 原文地址:https://www.cnblogs.com/zhsl/p/2834723.html
Copyright © 2011-2022 走看看