QOJ.ac

QOJ

Limite de temps : 25 s Limite de mémoire : 1024 MB Points totaux : 10

#8415. Монеты [A]

Statistiques

Наталья и Цезарь любят играть в игры, особенно в те, которые придумали сами. Они решили выложить перед собой последовательность стопок монет, по $m$ монет в каждой, причём каждая монета может быть либо синей, либо красной. В свой ход Наталья может выбрать любую синюю монету и убрать её из игры вместе со всеми монетами, находящимися над ней в этой стопке. Аналогично, в свой ход Цезарь может выбрать любую красную монету и убрать её вместе со всеми монетами из той же стопки, которые находятся выше неё. Игроки ходят по очереди, а проигрывает тот, кто не может сделать правильный ход — то есть когда все его монеты уже были ранее удалены из игры.

Зная правила, они должны определить начальное состояние игры — последовательность из $d$ стопок, каждая из которых содержит ровно $m$ монет. Ни Наталья, ни Цезарь не хотят иметь несправедливого преимущества, поэтому они договорились, что последовательность стопок должна быть «справедливой». Последовательность стопок называется справедливой, если при условии, что Наталья и Цезарь играют оптимально, побеждает тот игрок, который не делает первый ход. Таким образом, если первый ход делает Наталья, то при оптимальной стратегии побеждает Цезарь, и наоборот: если начинает Цезарь, то побеждает Наталья.

Пара уже выложила первые $k$ стопок по $m$ монет в каждой. Теперь они размышляют, как дополнить эту последовательность. Они пришли к выводу, что нет смысла иметь в игре более $n$ стопок монет. Помогите им и для каждого числа $d$ из интервала $[k, n]$ определите, сколько существует различных справедливых последовательностей из $d$ стопок по $m$ монет, которые начинаются с уже выложенной ими последовательности. Две последовательности стопок считаются различными, если существуют такие $i \in [1, d]$ и $j \in [1, m]$, что $j$-я монета в $i$-й стопке синяя в одной из последовательностей и красная в другой.

Поскольку эти результаты могут быть очень большими, достаточно вывести их остатки от деления на $10^9 + 7$.

Входные данные

В первой строке стандартного ввода находятся три целых числа $n, m$ и $k$ ($1 \le n \le 32$; $1 \le m \le 24$; $0 \le k \le n$), обозначающие соответственно ограничение на количество стопок, количество монет в каждой стопке и количество уже созданных стопок.

Следующие $k$ строк содержат описания уже установленных стопок; $i$-я из них содержит строку из символов ‘N’ и ‘C’ длиной ровно $m$, которая обозначает цвета монет в $i$-й стопке, начиная снизу. Если $j$-й символ этой строки — ‘N’, то в $i$-й стопке $j$-я монета снизу синяя. В противном случае этот символ — ‘C’, и монета красная.

Выходные данные

В единственной строке вывода должна содержаться последовательность из $n - k + 1$ целых чисел, где $i$-е из них должно быть остатком от деления на $10^9 + 7$ количества способов, которыми можно удлинить последовательность на $i - 1$ стопку так, чтобы итоговая последовательность стопок была справедливой.

Примеры

Пример 1

3 3 1
CCN
0 1 3

Пример 2

2 1 0
1 0 2

Пример 3

4 2 4
CN
NC
CC
NN
1

Примечание

В первом примере, если мы не добавим никаких стопок, последовательность из одного элемента не будет справедливой. Однако мы можем добавить стопку NNC — такая последовательность из двух стопок уже будет справедливой. Две стопки мы можем добавить тремя способами: [CCN, NNN], [NNN, CCN], [NCN, NCN].

Подзадачи

  • В некоторых группах тестов выполняется условие $k = n$.
  • В некоторых группах тестов выполняются условия $n \le 8$ и $m \le 8$.
  • В niektórych группах тестов выполняются условия $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.