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

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

타일

시간 제한4초메모리 제한1024 MB

요약
흰 칸만 덮는 1x2 도미노로 3xN 격자의 부분 구간을 채우는 경우의 수를 구하고, 칸 색이 바뀔 때마다 갱신한다.
난이도

어려움10점 중 9점

유형
동적 계획법, 세그먼트 트리, 행렬, 조합론
정답자
아직 제출이 없습니다

문제

양 Eustace는 새 집으로 이사한 뒤, 칙칙한 화장실 내부를 도저히 참을 수 없어 개조하기로 했다. 현재 변기 바닥은 검은 칸과 흰 칸으로 이루어진 3 × N 격자이며, 초기 배치는 정해져 있다.

Eustace는 크기가 1 × 2인 동일한 직사각형 타일을 매우 많이 가지고 있다. 화장실의 미관을 유지하기 위해 각 타일은 회전할 수 있지만, 변기의 벽과 평행하게 놓아야 한다. 또한 타일을 고정하는 접착제는 검은 칸에는 칠할 수 없으므로, 타일은 흰 칸에만 놓을 수 있다.

안타깝게도 Eustace의 화장실 개조는 시공자의 일정에 달려 있는데, 시공자는 일방적으로 계획을 미뤘다. 멍하니 있던 Eustace는 화장실 바닥의 a번째 열부터 b번째 열까지의 구간을 바라보며, 그 구간 안에 타일을 몇 개 놓거나 하나도 놓지 않아 만들 수 있는 서로 다른 배치의 수가 얼마인지 궁금해한다. 두 배치에서 어떤 타일을 공유하는 두 칸이 서로 다르면 두 배치는 다른 것으로 본다.

가능한 배치의 총수를 막 계산했을 때, 곰팡이와 같은 여러 원인으로 일부 칸의 색이 바뀌었다는 사실을 깨달았다. 특히 x번째 행, y번째 열의 한 칸이 검은색에서 흰색으로, 또는 그 반대로 바뀔 수 있다.

끊임없이 변하는 화장실 바닥의 색 배치 속에서 가능한 타일 배치의 수를 구해 Eustace를 도와주자!

답이 클 수 있으므로, 답을 1 000 000 007로 나눈 나머지를 출력한다.

입력

프로그램은 표준 입력에서 입력을 읽어야 한다.

입력의 첫째 줄에는 Eustace의 화장실 바닥 길이 N과 전체 질의 및 갱신의 수 Q를 나타내는 정수 2개가 주어진다.

이어서 칸의 초기 배치를 나타내는 3개의 줄이 주어진다. 각 줄은 점 ‘.’과 엑스 ‘x’로만 이루어진 길이 N의 문자열이다. 점은 흰 칸, 엑스는 검은 칸을 나타낸다.

그다음 Q개의 줄이 주어지며, 각 줄은 다음 두 형태 중 하나이다.

  • 1 x y: x번째 행, y번째 열의 칸 색이 뒤집히는 갱신을 나타낸다.
  • 2 a b: 타일을 a번째 열부터 b번째 열까지만 놓을 수 있을 때 만들 수 있는 배치의 수를 묻는 질의이다. 타일을 하나도 놓지 않는 것도 하나의 배치이다.

출력

프로그램은 표준 출력에 출력해야 한다.

각 질의마다 가능한 배치의 수를 1 000 000 007로 나눈 나머지를 새로운 줄에 출력한다.

제한

  • 1 ≤ N, Q ≤ 30000
  • 1 ≤ x ≤ 3
  • 1 ≤ y ≤ N
  • 1 ≤ a ≤ b ≤ N

예제3

  1. 예제 1

    입력
    4 5
    .x.x
    xx..
    ...x
    2 1 4
    2 3 3
    1 2 3
    2 1 4
    2 3 3
    
    예상 출력
    11
    3
    3
    1
    
  2. 예제 2

    입력
    2 1
    ..
    ..
    xx
    2 1 2
    
    예상 출력
    7
    
  3. 예제 3

    입력
    14 2
    ..............
    ..............
    ..............
    2 2 11
    2 1 14
    
    예상 출력
    47177097
    254767228