Zoj3864:quiz for Exo-l (BFS)

Source: Internet
Author: User

Exo (Korean:??; Chinese: Love cough; Often stylized as EXO) is a chinese-south Korean boy band based in Seoul, South Korea. Formed by SM Entertainment in, the group consists of twelve members separated into and subgroups, Exo-k and Exo-m, PE Rforming Music in Korean and Mandarin, respectively. The group officially debuted on April 8, with Suho, Baekhyun, Chanyeol, D.O, Kai, and Sehun under the Korean Subgrou P while Xiumin, Luhan, Kris, Lay, Chen, and Tao is under the Mandarin group. Kris filed a lawsuit against S.M. To is removed from the group, and Luhan followed suit in October 2014. The band now promotes with ten members since Mid-october, which consists of 8 Korean and 2 Chinese members.

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

baekhyun chanyeol chen d.o
kai kris lay luhan
sehun suho tao xiumin

EXO ' s official fanclub name has been announced to be exo-l. Exo-l are 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 T He fans is one ' like their team slogan ' WE is 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-images with rotation, and the output should being the owner of the badge in the image. The badge is rotated in an unknown angle. And each of the image is a square matrix. The badges would never touch or exceed the boundary of the image.

Since The images is large, we'll compress the images. Each of the pixel in the image was 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 both adjacent runs have different characters.
    • Output the length of each run.

For example, a image in size 6x6:

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

Input

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

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

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

Output

For each case, output the owner of the badge on one line. Your output should be formated as one of the 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 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 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
Xiuminsehun
Hint

The images in the sample input is visualized as:

Sample 1 Sample 2



In fact, the problem is not difficult, but it is test instructions box single difficult to understand, I saw the first feeling of the problem is a bit like HDU3839 that question, and then a try indeed, is to see the number of white blocks and the number of brown blocks and the figure in the above graph which maternal just, to note, For the outermost white block is not counted, we want to calculate the number of white blocks that are surrounded by black

#include <iostream> #include <stdio.h> #include <string.h> #include <stack> #include <queue > #include <map> #include <set> #include <vector> #include <math.h> #include <algorithm >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 longconst double pi = acos (-1.0); # Define Len 1000005#define mod 998244353struct 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<point> 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<n && next.y>=0 && next.y<n) {if (Vis[next.x][next.y]) continue;                if (mat[next.x][next.y]!=k) continue;                VIS[NEXT.X][NEXT.Y] = 1;                cnt++;            Q.push (next); }}} return cnt;}    int main () {int i,j,k;    scanf ("%d", &t);        W (t--) {scanf ("%d%d", &n,&m);        LX = ly = 0;            Up (i,0,m-1) {scanf ("%d", &x);                W (x--) {mat[lx][ly] = i%2;                Vis[lx][ly] = 0;                ly++;                    if (ly = = N) {lx++;                ly = 0;        }}} BFS (0,0,0);        Vector<int> 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;}







Zoj3864:quiz for Exo-l (BFS)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.