아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

3비트 컴퓨터

시간 제한1초메모리 제한128 MB

요약
초기화되지 않은 셀에서 두 가지 쌍 연산으로 목표 문자열을 만들 수 있는지 판정합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 문자열
정답자
아직 제출이 없습니다

문제

바이트 왕국의 과학자들이 새로운 종류의 기계, 곧 3비트 컴퓨터(TBC)를 만들기로 했다. 많은 이들은 이 기계가 보통 컴퓨터로는 너무 어려운 문제들까지 풀어 줄 것이라 기대한다. 개발 과정에서 과학자들은 여러 기술적 난관에 부딪혔고, 그중 하나를 해결하도록 돕는 것이 여러분의 임무다.

지금 이들은 메모리 초기화 절차를 다루고 있다. TBC에는 1,…,n1, \dots, n번으로 번호가 매겨진 nn개의 메모리 비트가 있다. 각 비트는 세 값(aa, bb, cc) 중 하나를 갖거나 아직 초기화되지 않은 상태다. TBC는 다음 두 가지 초기화 연산을 제공한다.

  • 연속한 두 비트가 모두 초기화되지 않았다면, 그 두 비트에 서로 다른 두 값을 지정할 수 있다.
  • 연속한 두 비트 중 하나가 초기화되지 않았고 다른 하나가 값 xx를 가지고 있다면, 그 두 비트에 서로 다른 두 값을 지정할 수 있으며 두 값 모두 xx와 달라야 한다 (값 xx를 갖고 있던 비트도 함께 덮어써진다).

예를 들어 n=4n = 4일 때 다음은 올바른 초기화 순서 하나다. 여기서 uu는 초기화되지 않은 비트를 뜻한다.

uuuu→uuab→ucbb→babbuuuu \rightarrow uuab \rightarrow ucbb \rightarrow babb

메모리가 최종적으로 가져야 할 값들을 읽어들여, 그러한 초기화가 가능한지 판정하고 답을 출력하는 프로그램을 작성하여라.

입력

입력에는 11개 이상 1010개 이하의 목표 메모리 구성이 주어진다. 첫 줄에는 구성의 개수를 나타내는 정수 하나가 있다. 이어서 각 구성은 두 줄로 주어진다. 첫 줄에는 ii번째 구성의 메모리 크기를 나타내는 정수 lil_i (1≤li≤1000001 \le l_i \le 100000)가 있다. 둘째 줄에는 도달하려는 구성을 나타내는, 문자 aa, bb, cc로 이루어진 길이 lil_i의 문자열이 있다.

출력

각 구성마다 한 줄씩 출력한다. ii번째 구성에 대해 초기화가 가능하면 TAK을, 불가능하면 NIE를 출력한다.

예제4

  1. 예제 1

    입력
    2
    4
    aaab
    4
    aabb
    
    예상 출력
    TAK
    NIE
    
  2. 예제 2

    입력
    3
    1
    a
    1
    b
    1
    c
    
    예상 출력
    NIE
    NIE
    NIE
    
  3. 예제 3

    입력
    6
    2
    ab
    2
    ba
    2
    aa
    2
    bb
    2
    cc
    2
    ca
    
    예상 출력
    TAK
    TAK
    NIE
    NIE
    NIE
    TAK
    
  4. 예제 4

    입력
    6
    3
    aab
    3
    aba
    3
    abc
    3
    aaa
    3
    cba
    3
    bcb
    
    예상 출력
    TAK
    TAK
    NIE
    NIE
    NIE
    TAK