程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> ZOJ3864:Quiz for EXO-L(BFS)

ZOJ3864:Quiz for EXO-L(BFS)

編輯:C++入門知識

ZOJ3864:Quiz for EXO-L(BFS)


Exo (Korean: ??; Chinese:愛咳嗽; often stylized as EXO) is a Chinese-South Korean boy band based in Seoul, South Korea. Formed by SM Entertainment in 2011, the group consists of twelve members separated into two subgroups, EXO-K and EXO-M, performing music in Korean and Mandarin, respectively. The group officially debuted on April 8, 2012, with Suho, Baekhyun, Chanyeol, D.O, Kai, and Sehun under the Korean subgroup while Xiumin, Luhan, Kris, Lay, Chen, and Tao are under the Mandarin group. Kris filed a lawsuit against S.M. to be removed from the group, and Luhan followed suit in October 2014. The band now promotes with 10 members since mid-October 2014, which consists of 8 Korean and 2 Chinese members.

In their first album, each member of EXO has a kind of super power. For example, Tao can control time and Lay has a super power of healing. The badges are the symbols of their super powers. Each member of EXO has an unique badge. The following table shows the shapes of their badges.

Baekhyun - light Chanyeol - flame Chen - lightning D.O - earth Baekhyun Chanyeol Chen D.O Kai - telepZ喎?http://www.Bkjia.com/kf/ware/vc/vcnRhdGlvbg==" src="http://www.bkjia.com/uploads/allimg/150414/040325CN-4.png" width="200" /> Kris - flight Lay - healing Luhan - telekinesis Kai Kris Lay Luhan Sehun - wind Suho - water Tao - time control Xiumin - frost Sehun Suho Tao Xiumin

EXO’s official fanclub name has been announced to be EXO-L. EXO-L is short for EXO-LOVE, L being the letter between M and K in the alphabet, signifying all the fans' love for both EXO-K and EXO-M of EXO, and also holds the meaning of 'EXO and the fans are one' like their team slogan 'WE ARE ONE.'

You should help an EXO-L pass a quiz about image recognition. The quiz requires a program to recognize the badges. The input is one of the above 12 images with rotation, and the output should be the owner of the badge in the image. The badge is rotated at an unknown angle. And each image is a square matrix. The badges will never touch or exceed the boundary of the image.

Since the images are large, we will compress the images. Each pixel in the image is either 1(white) or 0(black) after binarization. The compress method is simple:

  • Concatenate the pixels in the row first order to a string.Split the string to some runs with same characters, and two adjacent runs have different characters.Output the length of each run.

     

    For example, an image in size 6×6:

    111111
    100101
    100011
    110111
    101001
    111111
    
    We can compress it as the following:
    • Concatenate the pixels in the row first order, then we can get
      111111100101100011110111101001111111
      
      The runs are
      1111111 00 1 0 11 000 1111 0 1111 0 1 00 1111111
      
      So the result of compressed images is
      7 2 1 1 2 3 4 1 4 1 1 2 7
      
      Note that in this task the first run and the last run is always in white.

       

      Input

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

      The first line contains 2 integers n and m. n is the size of the square image. m is the number of the runs in the compressed images. (100≤ n ≤ 900)

      The second line contains m positive integers, indicating the length of the each runs in the compressed image. (The sum of the integers is n2).

      Output

      For each case, output the owner of the badge in one line. Your output should be formated as one of following words: "Suho", "Baekhyun", "Chanyeol", "D.O", "Kai", "Sehun", "Xiumin", "Luhan", "Kris", "Lay", "Chen", and "Tao".

      Sample Input

      2
      100 443
      1445 1 99 2 97 3 97 4 6 1 88 5 5 2 88 5 4 4 86 6 4 4 73 1 12 6 3 6 72 4 8 6 5 5 72 6 6 6 5 6 72 7 3 6 6 6 12 1 59 16 7 6 9 3 60 14 8 6 6 6 61 13 9 6 3 7 65 12 7 16 8 1 45 3 10 12 5 15 6 4 45 5 9 14 3 12 6 6 45 6 8 15 2 9 9 5 47 5 7 17 1 7 10 6 47 6 6 17 2 3 13 5 48 6 5 18 17 6 49 5 5 8 1 10 5 3 8 5 50 6 3 8 5 7 3 7 6 5 50 6 3 8 7 18 2 5 52 5 3 7 10 23 52 6 2 7 13 20 52 6 3 6 15 17 53 7 2 5 19 15 49 10 2 5 21 16 44 12 2 4 24 17 38 12 6 3 25 18 34 12 6 4 26 7 1 13 31 9 7 6 25 7 5 10 34 4 6 9 25 7 8 5 46 8 25 8 58 9 25 7 59 8 25 8 59 8 25 7 48 4 7 8 26 7 8 2 35 9 5 8 25 6 7 7 33 11 3 8 25 4 6 11 35 18 25 3 5 15 36 16 25 3 3 15 40 17 21 4 2 14 44 17 19 5 2 10 49 17 16 6 2 8 51 20 13 6 2 6 52 23 11 7 2 4 53 5 2 18 8 8 2 5 51 6 5 8 2 7 6 7 3 5 51 5 8 4 5 9 2 8 4 4 50 6 17 18 5 5 49 5 13 3 2 18 5 5 48 6 11 5 3 16 7 5 47 6 9 8 2 16 7 5 47 5 7 11 3 14 9 4 46 3 8 14 4 13 9 4 45 1 8 16 6 14 8 2 54 16 9 13 62 9 3 5 8 15 60 6 6 5 8 16 58 5 9 5 7 5 2 9 58 2 12 5 6 6 5 7 72 5 5 5 8 5 72 5 4 6 11 2 73 3 5 5 87 3 5 5 87 3 5 4 89 1 6 4 97 3 97 2 98 2 1445
      100 451
      1449 2 96 4 96 5 94 6 93 6 94 5 93 6 93 6 10 4 78 7 7 13 72 6 6 18 80 21 62 2 14 24 58 3 14 26 55 3 13 15 6 8 54 4 10 20 8 5 51 5 8 25 8 3 51 4 7 29 7 3 49 5 6 31 7 2 48 5 6 15 4 14 7 1 48 5 5 15 9 11 54 6 4 15 12 10 53 5 4 16 14 8 53 5 3 16 16 8 51 6 3 8 1 6 18 8 50 6 2 8 2 6 19 7 50 6 2 7 3 5 7 21 5 1 43 6 1 7 4 5 4 24 4 2 43 6 1 7 4 5 2 26 4 3 43 12 4 5 2 28 3 3 43 12 4 5 16 14 3 4 42 11 5 5 19 12 3 4 42 10 5 5 15 1 5 10 3 5 41 10 6 3 16 1 7 8 4 5 40 9 7 3 16 2 7 8 3 7 32 1 6 8 7 3 16 2 8 7 4 7 29 5 4 8 7 3 16 3 7 8 4 6 29 6 4 7 7 3 16 3 8 7 5 5 29 7 3 8 7 2 16 3 8 8 5 3 31 6 4 8 6 2 16 4 7 8 40 6 4 8 6 1 16 4 6 10 40 6 3 9 6 1 15 4 6 10 42 4 3 11 20 4 6 10 42 4 4 12 18 4 6 11 42 3 4 15 15 4 5 12 43 2 4 26 3 5 5 12 43 2 4 25 4 5 4 6 1 6 44 1 5 6 2 14 6 5 4 6 1 6 44 1 5 7 5 6 9 6 3 7 1 6 50 8 19 6 2 7 2 6 51 8 18 6 1 7 3 6 51 9 16 15 3 6 52 10 13 15 4 5 54 11 11 14 5 5 47 1 6 14 6 15 6 4 49 1 6 33 6 5 49 2 6 31 7 4 50 3 7 27 8 4 52 4 6 25 9 3 53 6 7 20 10 3 55 29 12 2 57 26 14 1 60 23 78 20 6 5 71 15 7 8 72 10 8 7 92 7 92 6 93 6 94 6 94 5 95 4 97 2 1448

      Sample Output

      Xiumin
      Sehun
      

      Hint

      The images in the sample input are visualized as:

       

      Sample 1 Sample 2
      Sample 1
      Sample 2
       
       
       
      其實這道題並不難,但是就是題意箱單難理解,我一看到這道題的第一感覺就是跟HDU3839那個題有點像,後來一試確實如此,就是看化成二進制後的白色塊數量與褐色塊數量與上面圖形中哪個婦嬰而已,要注意,對於最外層的白色塊是不計算在內的,我們要計算的是被黑色快包圍的白色塊的數量
       
       
      #include 
      #include 
      #include 
      #include 
      #include 
      #include
      #include 
      #include 
      #include 
      #include 
      using namespace std;
      #define ls 2*i
      #define rs 2*i+1
      #define up(i,x,y) for(i=x;i<=y;i++)
      #define down(i,x,y) for(i=x;i>=y;i--)
      #define mem(a,x) memset(a,x,sizeof(a))
      #define w(a) while(a)
      #define LL long long
      const double pi = acos(-1.0);
      #define Len 1000005
      #define mod 998244353
      
      struct Point
      {
          int x,y;
      };
      
      int t,n,m,lx,ly,x,y;
      int vis[1005][1005],mat[1005][1005];
      int to[8][2] = {1,0,0,1,-1,0,0,-1,1,1,1,-1,-1,1,-1,-1};
      
      int bfs(int x,int y,int k)
      {
          int i,j;
          queue Q;
          Point a,next;
          a.x = x;
          a.y = y;
          vis[x][y] = 1;
          int cnt = 1;
          Q.push(a);
          w(!Q.empty())
          {
              a = Q.front();
              Q.pop();
              up(i,0,7)
              {
                  next.x = a.x+to[i][0];
                  next.y = a.y+to[i][1];
                  if(next.x>=0 && next.x=0 && next.y black,white;
              up(i,0,n-1)
              {
                  up(j,0,n-1)
                  {
                      if(!vis[i][j])
                      {
                          if(!mat[i][j])
                              white.push_back(bfs(i,j,0));
                          else
                              black.push_back(bfs(i,j,1));
                      }
                  }
              }
              int bcnt = black.size(),wcnt = white.size();
              if(bcnt==1)
              {
                  if(wcnt==1)
                      puts("D.O");
                  else if(wcnt==2)
                      puts("Chen");
              }
              else if(bcnt==2)
              {
                  if(wcnt==12)
                      puts("Kai");
                  else if(wcnt==7)
                      puts("Suho");
                  else if(wcnt==3)
                      puts("Tao");
              }
              else if(bcnt==3)
              {
                  if(wcnt==0)
                      puts("Kris");
              }
              else if(bcnt==5)
              {
                  if(wcnt==0)
                      puts("Chanyeol");
                  else if(wcnt==7)
                      puts("Luhan");
                  else if(wcnt==1)
                  {
                      sort(black.begin(),black.end());
                      int sum=black[0]+black[1]+black[2]+black[3];
                      double tem=(double)sum/black[4];
                      if(tem<0.4)
                          puts("Sehun");
                      else puts("Xiumin");
                  }
              }
              else if(bcnt==6)
              {
                  if(wcnt==1)
                      puts("Lay");
              }
              else if(bcnt==9)
              {
                  if(wcnt==1)
                      puts("Baekhyun");
              }
      
          }
      
          return 0;
      }
      

       
       
       
       

       

       

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved