QOJ.ac

QOJ

実行時間制限: 25 s メモリ制限: 1024 MB 満点: 10

#8415. 동전 [A]

統計

나탈리아와 체자리는 게임을 즐기며, 특히 자신들이 직접 만든 게임을 가장 좋아합니다. 그들은 각 $m$개의 동전으로 이루어진 동전 더미들을 일렬로 배치하기로 했습니다. 각 동전은 파란색이거나 빨간색입니다. 나탈리아는 자신의 차례에 파란색 동전을 하나 골라, 그 동전과 그 위에 쌓인 모든 동전을 게임에서 제거할 수 있습니다. 마찬가지로 체자리는 자신의 차례에 빨간색 동전을 하나 골라, 그 동전과 그 위에 쌓인 모든 동전을 게임에서 제거할 수 있습니다. 두 플레이어는 번갈아 가며 움직이며, 더 이상 유효한 움직임을 할 수 없는 사람(즉, 자신의 색깔 동전이 모두 제거된 사람)이 패배합니다.

이제 그들은 게임의 초기 상태, 즉 각각 $m$개의 동전으로 구성된 $d$개의 더미를 결정해야 합니다. 나탈리아와 체자리는 어느 한쪽이 불공정한 이득을 얻는 것을 원치 않으므로, 더미의 배치가 '공정'해야 한다는 데 동의했습니다. 더미의 배치가 공정하다는 것은, 나탈리아와 체자리가 최적으로 플레이할 때, 첫 번째 움직임을 하지 않는 플레이어가 승리한다는 것을 의미합니다. 즉, 나탈리아가 먼저 움직이면 체자리가 승리하고, 체자리가 먼저 움직이면 나탈리아가 승리합니다.

그들은 이미 $m$개의 동전으로 구성된 $k$개의 더미를 배치했습니다. 이제 이 더미들을 어떻게 완성할지 고민하고 있습니다. 그들은 게임에 $n$개 이상의 더미가 있는 것은 의미가 없다고 결론지었습니다. 여러분은 그들을 도와 $[k, n]$ 범위의 각 $d$에 대해, 이미 배치된 더미들로 시작하여 $d$개의 더미로 구성된 공정한 배치가 몇 가지나 존재하는지 구해야 합니다. 두 더미 배치는 어떤 $i \in [1, d]$와 $j \in [1, m]$에 대해 $i$번째 더미의 $j$번째 동전 색깔이 서로 다르면 다른 것으로 간주합니다.

결과값이 매우 클 수 있으므로, $10^9 + 7$로 나눈 나머지를 출력하십시오.

입력

첫 번째 줄에는 세 개의 정수 $n, m, k$ ($1 \le n \le 32$; $1 \le m \le 24$; $0 \le k \le n$)가 주어지며, 이는 각각 더미 개수의 제한, 각 더미의 동전 개수, 이미 생성된 더미의 개수를 의미합니다.

이어지는 $k$개의 줄에는 이미 배치된 더미에 대한 정보가 주어집니다. $i$번째 줄에는 아래에서부터 시작하는 $m$ 길이의 'N'과 'C'로 이루어진 문자열이 주어집니다. $j$번째 문자가 'N'이면 $i$번째 더미의 아래에서 $j$번째 동전은 파란색이고, 'C'이면 빨간색입니다.

출력

한 줄에 $n - k + 1$개의 정수를 출력하십시오. $i$번째 정수는 $i - 1$개의 더미를 추가하여 최종적으로 공정한 더미 배치를 만드는 방법의 수를 $10^9 + 7$로 나눈 나머지입니다.

예제

입력 1

3 3 1
CCN

출력 1

0 1 3

입력 2

2 1 0

출력 2

1 0 2

입력 3

4 2 4
CN
NC
CC
NN

출력 3

1

참고

첫 번째 예제에서, 더미를 추가하지 않으면 단일 더미는 공정하지 않습니다. 하지만 NNC 더미를 추가하면 두 개의 더미로 구성된 공정한 배치가 됩니다. 두 개의 더미를 추가하는 방법은 [CCN, NNN], [NNN, CCN], [NCN, NCN]으로 총 세 가지입니다.

서브태스크

  • 일부 테스트 그룹에서는 $k = n$ 조건이 성립합니다.
  • 일부 테스트 그룹에서는 $n \le 8$ 및 $m \le 8$ 조건이 성립합니다.
  • 일부 테스트 그룹에서는 $n \le 12$ 및 $m \le 13$ 조건이 성립합니다.
  • 일부 테스트 그룹에서는 $n \le 16$ 및 $m \le 19$ 조건이 성립합니다.

위에서 언급된 각 경우는 이전 경우에서 언급되지 않은 최소 하나의 그룹을 설명합니다.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.