ZOJ 3864 Quiz for Exo-l

Source: Internet
Author: User

Title Link: Quiz for exo-l


Surface:

B-Quiz for Exo-lTime limit:$ MS Memory Limit:65536KB 64bit IO Format:%lld & Amp %llu SubmitStatusPractice ZOJ 3864

Description

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

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


Solving:

This is definitely the most up-to-date graphics problem I've done so far. Before the idea, looked at the other people's solution, only to know to judge the number of black and white unicom block, you can determine the figure of 10, however, there are two pictures are the same, that is, two sets of examples given. Can only say that the topic design is very heart machine, through a given two sets of samples, the number of black and white blocks, take the block divided by Black block, a value of 4.3, a value of 4.8, 4.5 as the bounds of judgment can be. (Deep search will explode stack, however I should think, so use wide search).


Code: (The code is very bad, just look at it.) )

#include <iostream> #include <cstdio> #include <fstream> #include <cstring> #include <queue >using namespace Std;bool status1[1000][1000],status2[1000][1000];bool vis1[1000][1000],vis2[1000][1000];int t,n , m,tmp,cnt_black,cnt_white,flag,row,column,whiteblock,blackblock,ans;void bfs1 (int x,int y) {int xx,yy;queue <int    > Q1;queue <int> q2;status1[x][y]=0; Q1.push (x); Q2.push (y-1); Q1.push (x); Q2.push (y+1); Q1.push (x-1); Q2.push (y-1); Q1.push (x-1); Q2.push (y+1); Q1.push (    X-1); Q2.push (y);      Q1.push (x+1); Q2.push (y-1); Q1.push (x+1); Q2.push (y+1); Q1.push (x+1); Q2.push (y); while (!q1.empty ()) {Xx=q1.front ();  Q1.pop ();  Yy=q2.front ();  Q2.pop (); if (xx<0| | yy<0| | xx>901| |  yy>901) continue;  if (status1[xx][yy]==0) continue;      status1[xx][yy]=0;  Q1.push (XX); Q2.push (yy-1);  Q1.push (XX); Q2.push (yy+1);     Q1.push (xx-1); Q2.push (yy-1);  Q1.push (xx-1); Q2.push (yy+1);      Q1.push (xx-1); Q2.push (yy);  Q1.push (xx+1); Q2.push (yy-1); Q1.push (xx+1); Q2.push (yy+1); Q1.push (xx+1); Q2.push (yy);}}   void Search1 () {for (int. i=1;i<=n;i++) {for (int j=1;j<=n;j++) {if (status1[i][j]==1) {BFS1 (i,j);   whiteblock++;    }}}}void bfs2 (int x,int y) {int xx,yy;queue <int> q1;queue <int> q2;status2[x][y]=1; Q1.push (x); Q2.push (y-1); Q1.push (x); Q2.push (y+1); Q1.push (x-1); Q2.push (y-1); Q1.push (x-1); Q2.push (y+1); Q1.push (    X-1); Q2.push (y);  Q1.push (x+1); Q2.push (y-1); Q1.push (x+1); Q2.push (y+1); Q1.push (x+1); Q2.push (y); while (!q1.empty ()) {Xx=q1.front ();  Q1.pop ();  Yy=q2.front ();  Q2.pop (); if (xx<0| | yy<0| | xx>901| |  yy>901) continue;  if (status2[xx][yy]==1) continue;      Status2[xx][yy]=1;  Q1.push (XX); Q2.push (yy-1);  Q1.push (XX); Q2.push (yy+1);     Q1.push (xx-1); Q2.push (yy-1);  Q1.push (xx-1); Q2.push (yy+1);      Q1.push (xx-1); Q2.push (yy);  Q1.push (xx+1); Q2.push (yy-1);  Q1.push (xx+1); Q2.push (yy+1); Q1.push (xx+1); Q2.push (yy);}} void Search2 () {for (int. i=1;i<=n;i++) {for (int j=1;j<=n;j++) {if (status2I   [j]==0) {BFS2 (i,j);   blackblock++;        }}}}int Main () {scanf ("%d", &t), while (t--) {scanf ("%d%d", &n,&m); Whiteblock=blackblock=cnt_black=cnt_white=0;flag=row=column=1;memset (status1,0,sizeof (STATUS1)); Memset (Status2 , 0,sizeof (STATUS2)), memset (vis1,-1,sizeof (VIS1)), memset (vis2,-1,sizeof (VIS2)), for (int i=0;i<m;i++) {scanf ("%d     ", &tmp), if (flag==1) {for (int j=0;j<tmp;j++) {status1[row][column]=status2[row][column]=1;     cnt_white++;   if (column==n) {row++;     column=0;  } column++;   } flag*=-1;     }else{for (int j=0;j<tmp;j++) {cnt_black++;     if (column==n) {row++;     column=0;      } column++; } Flag*=-1;}} Search1 (); Search2 (); ans=blackblock*100+whiteblock;if (ans==902) printf ("baekhyun\n"); else if (ans==501) printf ("        Chanyeol\n "), else if (ans==103) printf (" chen\n "), else if (ans==102) printf (" d.o\n "), else if (ans==213) printf (" kai\n "); else if (ans==301) printf ("kris\n"); ElsE if (ans==602) printf ("lay\n"); else if (ans==508) printf ("luhan\n"), else if (ans==208) printf ("suho\n"), else if (ans==204) printf ("tao\n"), else{if (2   *cnt_white> (cnt_black*9)) printf ("xiumin\n"); else printf ("sehun\n");}}}



Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.

ZOJ 3864 Quiz for Exo-l

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.