QOJ.ac

QOJ

Límite de tiempo: 25 s Límite de memoria: 1024 MB Puntuación total: 10

#8415. 硬幣 [A]

Estadísticas

Natalia 和 Cezary 喜歡玩遊戲,特別是他們自己發明的遊戲。他們決定排出一列硬幣堆,每堆包含 $m$ 枚硬幣,每枚硬幣不是藍色就是紅色。在 Natalia 的回合中,她可以選擇任何一枚藍色硬幣,並將其連同該堆中位於其上方的所有硬幣一起從遊戲中移除。同樣地,在 Cezary 的回合中,他可以選擇任何一枚紅色硬幣,並將其連同該堆中位於其上方的所有硬幣一起從遊戲中移除。玩家輪流進行操作,無法進行合法操作者即為輸家——也就是說,當所有硬幣都已被移除時。

在了解規則後,他們現在必須確定遊戲的初始狀態——一個包含 $d$ 堆硬幣的序列,每堆恰好包含 $m$ 枚硬幣。Natalia 和 Cezary 都不希望對方擁有不公平的優勢,因此他們一致認為硬幣堆序列必須是「公平的」。如果假設 Natalia 和 Cezary 都採取最佳策略,且由後手獲勝,則稱該硬幣堆序列為公平的。也就是說,如果由 Natalia 先手,則在最佳策略下 Cezary 會獲勝;反之亦然:如果由 Cezary 先手,則 Natalia 會獲勝。

這對搭檔已經排好了前 $k$ 堆硬幣,每堆 $m$ 枚。現在他們正在考慮如何完成這個序列。他們已經得出結論,遊戲中不應超過 $n$ 堆硬幣。請幫助他們,對於區間 $[k, n]$ 中的每個數字 $d$,計算有多少種不同的公平序列(包含 $d$ 堆,每堆 $m$ 枚)是以他們已經排好的序列作為開頭的。如果存在 $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' 組成,表示第 $i$ 堆中從底部開始的硬幣顏色。如果字串的第 $j$ 個字元是 'N',則表示第 $i$ 堆中從底部數起的第 $j$ 枚硬幣是藍色的。否則,該字元為 'C',表示該硬幣是紅色的。

輸出格式

輸出單行,包含 $n - k + 1$ 個整數,其中第 $i$ 個數應為將序列延長 $i - 1$ 堆,使得最終序列為公平序列的方法數,對 $10^9 + 7$ 取模後的結果。

範例

範例 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$。
  • 在某些測試組中,滿足條件 $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.