• The 13th Zhejiang Provincial Collegiate Programming Contest


    Defuse the Bomb

    Time Limit: 2 Seconds      Memory Limit: 65536 KB

    The bomb is about to explode! Please defuse it as soon as possible!

    There is a display showing a number from 1 to 4 on the bomb. Besides this, there are 4 buttons under the display. Each button is labeled by a number from 1 to 4. The numbers on the buttons are always distinct.

    There are 5 defusing stages in total. Pressing the correct button can progress the bomb to the next defusing stage. The number on the display and the number on each button may be different in different stages. The bomb will be defused only when all 5 defusing stages get passed. Pressing the incorrect button will cause the bomb to explode immediately. Be careful!

    Here is the detailed bomb defusing manual. Button positions are ordered from left to right.

    Stage 1:

    • If the display is 1, press the button in the second position.
    • If the display is 2, press the button in the second position.
    • If the display is 3, press the button in the third position.
    • If the display is 4, press the button in the fourth position.

    Stage 2:

    • If the display is 1, press the button labeled "4".
    • If the display is 2, press the button in the same position as you pressed in stage 1.
    • If the display is 3, press the button in the first position.
    • If the display is 4, press the button in the same position as you pressed in stage 1.

    Stage 3:

    • If the display is 1, press the button with the same label you pressed in stage 2.
    • If the display is 2, press the button with the same label you pressed in stage 1.
    • If the display is 3, press the button in the third position.
    • If the display is 4, press the button labeled "4".

    Stage 4:

    • If the display is 1, press the button in the same position as you pressed in stage 1.
    • If the display is 2, press the button in the first position.
    • If the display is 3, press the button in the same position as you pressed in stage 2.
    • If the display is 4, press the button in the same position as you pressed in stage 2.

    Stage 5:

    • If the display is 1, press the button with the same label you pressed in stage 1.
    • If the display is 2, press the button with the same label you pressed in stage 2.
    • If the display is 3, press the button with the same label you pressed in stage 4.
    • If the display is 4, press the button with the same label you pressed in stage 3.

    Input

    There are multiple test cases. The first line of input is an integer T indicating the number of test cases. For each test case:

    There are 5 lines. Each line contains 5 integers D, B1, B2, B3, B4 indicating the number on the display and the numbers on the buttons respectively. The i-th line correspond to the i-th stage.

    Output

    For each test case, output 5 lines. The i-th line contains two integers indicating the position and the label of the correct button for the i-th stage.

    Sample Input

    1
    4 2 1 3 4
    2 2 4 3 1
    4 3 1 4 2
    4 3 4 2 1
    2 3 1 2 4
    

    Sample Output

    4 4
    4 1
    3 4
    4 1
    2 1
    

    Hint

    Keep talking with your teammates and nobody explodes!

    题意:拆炸弹 5个阶段 根据显示的不同  按不同的键

    题解:恶心模拟

      1  #include<iostream>
      2  #include<cstring>
      3  #include<cstdio>
      4  #include<queue>
      5  #include<stack>
      6  #include<map>
      7  #include<set>
      8  #include<algorithm>
      9  #define LL __int64
     10  #define pi acos(-1.0)
     11  #define mod 1
     12  #define maxn 10000
     13  using namespace std;
     14  int t;
     15  int d1,d2,d3,d4,d5;
     16  int b1[5];
     17  int b2[5];
     18  int b3[5];
     19  int b4[5];
     20  int b5[5];
     21  int main()
     22  {
     23      while(scanf("%d",&t)!=EOF)
     24      {
     25          for(int i=1;i<=t;i++)
     26          {
     27              int x1,y1;
     28              int x2,y2;
     29              int x3,y3;
     30              int x4,y4;
     31              int x5,y5;
     32              scanf("%d %d %d %d %d",&d1,&b1[1],&b1[2],&b1[3],&b1[4]);
     33              if(d1==1||d1==2)
     34              {
     35                  x1=2;
     36                  y1=b1[2];
     37             }
     38              else
     39              if(d1==3)
     40              {
     41                  x1=3;
     42                  y1=b1[3];
     43              }
     44              else
     45              if(d1==4)
     46              {  x1=4;
     47                  y1=b1[4];
     48              }
     49              cout<<x1<<" "<<y1<<endl; 
     50              scanf("%d %d %d %d %d",&d2,&b2[1],&b2[2],&b2[3],&b2[4]);
     51              if(d2==2||d2==4)
     52                {
     53                    x2=x1;
     54                    y2=b2[x1];    
     55               }
     56               else
     57               if(d2==3)
     58                 {
     59                     x2=1;
     60                     y2=b2[1];
     61                 }
     62                 else
     63                 if(d2==1)
     64                 {   int k;
     65                     for(k=1;k<=4;k++)
     66                      if(b2[k]==4)
     67                      break;
     68                     x2=k;
     69                     y2=4;
     70                 }
     71             cout<<x2<<" "<<y2<<endl;
     72              scanf("%d %d %d %d %d",&d3,&b3[1],&b3[2],&b3[3],&b3[4]);
     73              if(d3==1)
     74              {
     75              int k;
     76               for(k=1;k<=4;k++)
     77               if(b3[k]==y2)
     78                      break;
     79                 x3=k;
     80                 y3=y2;    
     81              }
     82              else
     83              if(d3==2)
     84              {
     85                   int k;
     86               for(k=1;k<=4;k++)
     87              if(b3[k]==y1)
     88                      break;
     89                 x3=k;
     90                 y3=y1;    
     91              }
     92              else
     93              if(d3==3)
     94              {
     95                  x3=3;
     96                  y3=b3[3];
     97              }
     98              else
     99              if(d3==4)
    100              {
    101                  int k;
    102                  for(k=1;k<=4;k++)
    103                      if(b3[k]==4)
    104                      break;
    105                     x3=k;
    106                     y3=4;
    107              }
    108              cout<<x3<<" "<<y3<<endl;
    109              scanf("%d %d %d %d %d",&d4,&b4[1],&b4[2],&b4[3],&b4[4]);
    110              if(d4==1)
    111               {
    112                  x4=x1;
    113                  y4=b4[x1];
    114              }
    115              else
    116              if(d4==2)
    117              {
    118                  x4=1;
    119                  y4=b4[1];
    120              }
    121              else
    122              if(d4==3)
    123              {  x4=x2;
    124                  y4=b4[x2];
    125              }
    126              else
    127              if(d4==4)
    128              {
    129                  x4=x2;
    130                  y4=b4[x2];
    131              }
    132              cout<<x4<<" "<<y4<<endl;
    133              scanf("%d %d %d %d %d",&d5,&b5[1],&b5[2],&b5[3],&b5[4]);
    134              if(d5==1)
    135              {
    136                  int k;
    137                     for(k=1;k<=4;k++)
    138                      if(b5[k]==y1)
    139                      break;
    140                     x5=k;
    141                     y5=y1;
    142              }
    143              else
    144              if(d5==2)
    145              {
    146                  int k;
    147                     for(k=1;k<=4;k++)
    148                      if(b5[k]==y2)
    149                      break;
    150                     x5=k;
    151                     y5=y2;
    152              }
    153              else
    154              if(d5==3)
    155              {
    156                  int k;
    157                     for(k=1;k<=4;k++)
    158                      if(b5[k]==y4)
    159                      break;
    160                     x5=k;
    161                     y5=y4;
    162              }
    163              else
    164              if(d5==4)
    165              {
    166                  int k;
    167                     for(k=1;k<=4;k++)
    168                      if(b5[k]==y3)
    169                      break;
    170                     x5=k;
    171                     y5=y3;
    172              }
    173              cout<<x5<<" "<<y5<<endl;
    174          }
    175     }
    176      return 0;
    177  }
  • 相关阅读:
    Java jar: A JNI error has occurred, please check your installation and try again
    iOS开发UITouch触摸API简介
    iOS 绘制图形
    iOS图形绘制
    iOS利用drawRect方法绘制图形
    iOS 混合变换旋转 CGAffineTransform 的使用
    [原创]什么是持续集成,持续交付和持续部署?
    [原创]Windows下Python+Pytest+Allure 接口自动化测试环境安装
    Embeded linux 之 UBIFS文件系统【转】
    ARM嵌入式学习笔记——《根文件系统》【转】
  • 原文地址:https://www.cnblogs.com/hsd-/p/5424991.html
Copyright © 2020-2023  润新知