HDOJ 2526 HDU 2526ロマンチック携帯ACM 2526 IN HDU

4063 ワード

MiYuオリジナル、転帖は明記してください:転載は______________白い家 から
 
タイトルアドレス:
http://acm.hdu.edu.cn/showproblem.php?pid=2526
タイトルの説明:
ロマンチックな携帯電話Time Limit:3000/1000 MS(Java/others)Memory Limit:32768/32768 K(Java/others)Total Submission(s):362 Accepted Submission(s):150
Problem Description
最近、WisKeyは携帯電話の着信音に夢中になっているが、音律がよく分からないので、コンピュータでランダムに着信音を生成できるかどうか考えている.WisKeyがプログラムを書いた後、生成されたのはベルではなく、ノイズであることに気づいた.
その後、WisKeyはいくつかの楽譜を調べたところ、多くのベルが何らかの法則で変化していることが分かった.ここではこの難題を簡略化するために、彼は3つの音符で次の音符を判断した.
パターンがあれば

第1行目の楽譜が与えられた場合、パターンによって以下の楽譜パターンが生成される.
HDOJ 2526 HDU 2526 浪漫手机 ACM 2526 IN HDU
私たちは0で白い格子を表し、1で黒い格子を表します.
連続した3つの格子がないエッジ(すなわち左または右の格子がない)については,欠けている格子の代わりに白い格子を直接用いた.
 
Input
最初の行には、Tグループのデータを表す整数Tがあります.
各グループのデータには整数Mがあり、M行の楽譜を出力することを示す.続いて8行のパターン列があり、左が音符モード、右が次の音符です.最後の行は最初の楽譜です.
 
Output
M行を出力し、M行楽譜を表す.
 
Sample Input

     
       
1 16 111 1 110 1 101 1 100 1 011 1 010 0 001 1 000 0 0000000000000001000000000000000

 
Sample Output

     
       
0000000000000001000000000000000 0000000000000010100000000000000 0000000000000101010000000000000 0000000000001010101000000000000 0000000000010101010100000000000 0000000000101010101010000000000 0000000001010101010101000000000 0000000010101010101010100000000 0000000101010101010101010000000 0000001010101010101010101000000 0000010101010101010101010100000 0000101010101010101010101010000 0001010101010101010101010101000 0010101010101010101010101010100 0101010101010101010101010101010 1010101010101010101010101010101

 
标题分析:纯水模拟题....上の3つの格子の色から下の真ん中の色を出すのです.押し出して直接出力すればいいです.タイトルは最初の行の色を与えて、下のは直接暴力で押し出すことができてhashですぐに判断することができます.コードは以下のとおりです:/*
Coded By  : MiYu
Link      : http://www.cnblogs.com/MiYu  || http://www.cppblog.com/MiYu
Author By : MiYu
Test      : 1
Program   : 2526
*/
//#pragma warning( disable:4789 )
#include
#include
#include
using namespace std;
char c[2][50];
int T,t,M;
int main(){
    char a[3],b[9];
for(int i=0;i<2;i++) c[i][0]='0';
scanf("%d",&T);
while(T--){
scanf("%d",&M);
for(int i=1;i<=8;i++){
scanf("%s",a);
int num=(a[0]-'0')*4+(a[1]-'0')*2+a[2]-'0';
scanf("%d",&t);
b[num] = '0' + t;
}
scanf("%s",&c[0][1]);
int len=strlen(&c[0][1]);
for(int i=0;i<2;i++) c[i][len+1]='0';
for(int j=0;jfor(int i=0;iint num=(c[j%2][i]-'0')*4+(c[j%2][i+1]-'0')*2+c[j%2][i+2]-'0';
c[(j+1)%2][i+1]=b[num];
                printf("%c",c[j%2][i+1]);
}
            printf("");
}
}
return 0;
}