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

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

Cow Poetry

시간 제한2초메모리 제한512 MB

요약
주어진 단어들로 정확히 K음절인 M개의 줄을 채우되 같은 운율 기호를 가진 줄은 같은 운율 부류로 끝나야 할 때, 가능한 시의 수를 1e9+7로 나눈 나머지를 구한다.
난이도

보통10점 중 6점

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

문제

농부 존은 모르지만, 베시는 예술을 무척 좋아한다. 최근에는 위대한 시인 여럿을 공부하기 시작했고, 이제 직접 시를 써 보고 싶어 한다.

베시는 NN개 (1≤N≤50001 \leq N \leq 5000)의 단어를 알고 있고, 이것들을 시로 엮으려고 한다. 베시는 각 단어의 길이를 음절 수로 알고 있으며, 단어들을 "운 클래스"로 나누어 두었다. 어떤 단어는 같은 운 클래스에 속한 다른 단어와만 운을 맞춘다.

베시의 시는 각각 MM개의 행 (1≤M≤1051 \leq M \leq 10^5)으로 이루어지고, 각 행은 KK개의 음절 (1≤K≤50001 \leq K \leq 5000)로 구성되어야 한다. 또한 베시의 시는 정해진 운율 구조를 따라야 한다.

베시는 주어진 조건을 만족하는 서로 다른 시의 개수를 알고 싶어 한다.

입력

첫 번째 줄에 NN, MM, KK가 주어진다.

다음 NN개의 줄에는 각각 두 수 s_is\_i (1≤s_i≤K1 \leq s\_i \leq K)와 c_ic\_i (1≤c_i≤N1 \leq c\_i \leq N)가 주어진다. 이는 베시가 음절 수 s_is\_i인 단어를 운 클래스 c_ic\_i에 하나 알고 있음을 나타낸다.

마지막 MM개의 줄은 베시가 원하는 운율 구조를 나타내며, 각 줄에 대문자 하나 e_ie\_i가 주어진다. e_ie\_i의 값이 같은 행들은 모두 같은 운 클래스의 단어로 끝나야 한다. e_ie\_i의 값이 다른 행들이 반드시 서로 다른 운 클래스의 단어로 끝나야 하는 것은 아니다.

출력

베시가 이 조건을 만족하며 쓸 수 있는 시의 개수를 출력한다. 이 수는 매우 클 수 있으므로 1,000,000,007로 나눈 나머지를 출력한다.

힌트

이 예에서 베시는 세 단어를 알고 있다. 처음 두 단어는 서로 운을 맞추고 길이가 각각 세 음절과 네 음절이며, 마지막 단어는 세 음절이고 다른 단어와 운을 맞추지 않는다. 베시는 각 행이 열 음절이고 첫 행과 마지막 행이 운을 맞추는 세 행짜리 시를 쓰려고 한다. 이런 시는 960개 있다. 유효한 시의 한 예는 다음과 같다(1, 2, 3은 각각 첫 번째, 두 번째, 세 번째 단어를 나타낸다): 121 123 321

예제1

  1. 예제 1

    입력
    3 3 10
    3 1
    4 1
    3 2
    A
    B
    A
    
    예상 출력
    960