BOI-handsome 수

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

요약
길이 n인 {1,2,3} 문자열 가운데 금지된 인접 쌍을 피하는 것을, 위치 순열이 정하는 순서로 B 이하까지 세는 문제이다.
난이도

보통10점 중 7점

유형
동적 계획법, 조합론, 수학, 구현
정답자
아직 제출이 없습니다

문제

자릿수가 1, 2, 3 세 종류뿐인 수를 생각한다. 특별한 집합 FF 는 두 자리의 순서쌍들을 원소로 가진다. 어떤 수에서 이웃한 두 자리로 이루어진 순서쌍 중 하나라도 FF 에 속하면, 그 수를 위험한 수라고 부른다.

수 xx 가 다음 세 조건을 모두 만족하면 BOI-handsome 수라고 한다.

  • xx 는 오직 자릿수 1, 2, 3 으로만 이루어진다.
  • xx 는 정확히 nn 자리이다.
  • xx 는 위험한 수가 아니다.

BOI-handsome 수들을 비교하는 순서는 보통의 대소 비교와 다르다. 왼쪽에서부터 1번째, 2번째 자리 순서로 비교하는 대신, {1,2,…,n}\{1, 2, \dots, n\} 의 어떤 순열 PP 에 따라 비교한다. 즉 먼저 P(1)P(1) 번째 자리를 비교하고, 같으면 P(2)P(2) 번째 자리를, 그다음 P(3)P(3) 번째 자리를 비교하며, P(n)P(n) 번째 자리까지 이어간다. 이 비교 순서를 P-순서라고 부른다.

BOI-handsome 수 BB 가 주어질 때, P-순서로 BB 보다 작거나 같은 BOI-handsome 수가 몇 개인지 구하라. 답이 매우 커질 수 있으므로 109+710^9 + 7 로 나눈 나머지를 출력한다.

입력

첫째 줄에 BOI-handsome 수의 자릿수 nn 이 주어진다.

둘째 줄에 순열 PP 를 나타내는 nn 개의 정수가 공백으로 구분되어 주어진다. ii 번째 정수가 P(i)P(i) 이다.

셋째 줄에 집합 FF 의 원소 개수 mm 이 주어진다.

넷째 줄에 FF 의 서로 다른 원소 mm 개가 공백으로 구분되어 주어진다. 각 원소는 두 자리 수 abab 형태이다.

다섯째(마지막) 줄에 수 BB 가 주어진다.

출력

P-순서로 BB 보다 작거나 같은 BOI-handsome 수의 개수를 109+710^9 + 7 로 나눈 나머지를 한 줄에 출력한다.

제한

  • 1<n≤400 0001 < n \le 400\,000
  • 1≤m1 \le m
  • FF 의 각 원소는 a,b∈{1,2,3}a, b \in \{1, 2, 3\} 인 abab 형태이다.
  • BB 는 BOI-handsome 수이다.

힌트

아래는 첫 번째 예제(n=3n = 3, P=(2,1,3)P = (2, 1, 3), F={22,13}F = \{22, 13\}, B=321B = 321)에 대한 설명이다.

자릿수 1, 2, 3 으로 이루어진 세 자리 수 중 P-순서로 321321 보다 작거나 같은 수를, P-순서로 증가하는 순으로 나열하면 다음과 같다.

111,112,113,211,212,213,311,312,313,121,122,123,221,222,223,321111, 112, 113, 211, 212, 213, 311, 312, 313, 121, 122, 123, 221, 222, 223, 321

이 가운데 113,213,313,122,221,222,223113, 213, 313, 122, 221, 222, 223 은 이웃한 두 자리에 1313 또는 2222 를 포함하므로 위험한 수이다. 남은 9 개가 BOI-handsome 수이므로 답은 99 이다.

예제6

  1. 예제 1

    입력
    3
    2 1 3
    2
    22 13
    321
    
    예상 출력
    9
    
  2. 예제 2

    입력
    2
    1 2
    1
    13
    33
    
    예상 출력
    8
    
  3. 예제 3

    입력
    3
    3 2 1
    2
    31 12
    321
    
    예상 출력
    4
    
  4. 예제 4

    입력
    2
    2 1
    2
    11 33
    23
    
    예상 출력
    7
    
  5. 예제 5

    입력
    5
    3 1 4 2 5
    3
    22 13 31
    12121
    
    예상 출력
    7
    
  6. 예제 6

    입력
    3
    1 2 3
    1
    32
    231
    
    예상 출력
    15