#P10363. [PA2024] Monety
[PA2024] Monety
题目背景
PA 2024 5A2
题目描述
Natalia 和 Cezary 喜欢玩游戏,尤其是他们自己发明的游戏。他们决定在自己面前放置一些堆硬币,硬币从上到下排成类似栈的样子,每堆有 枚硬币,每枚硬币要么是蓝色的,要么是红色的。轮到 Natalia 时,她可以选择一枚蓝色硬币,并将其连同其上方的所有硬币一起从硬币堆中移除。同样,在轮到 Cezary 时,他可以选择一枚红色硬币,并将其连同其上方的所有硬币一起从硬币堆中移除。 玩家将轮流操作,不能采取合法操作的玩家就输了——也就是说,当一位玩家操作的所有硬币都已被移除时。
现在他们知道了规则,他们必须确定游戏的初始状态—— 堆硬币,每堆恰好包含 个硬币。Natalia 和 Cezary 都不希望拥有不公平的优势,因此他们一致认为硬币的顺序应该是公平的。假设 Natalia 和 Cezary 都采取最优策略,后手赢得游戏,则称初始状态是公平的。因此,如果 Natalia 先手,则采用最优策略的 Cezary 将获胜,反之亦然:如果 Cezary 先手,Natalia 将获胜。
两人已经摆好了前 堆 个硬币。现在他们正在思考如何完成这一系列硬币堆。他们已经得出结论,游戏中拥有超过 堆硬币是没有意义的。
帮助他们,对于区间 中的每个整数 ,告诉他们有多少种不同的由 堆 枚硬币组成的公平初始状态,这些初始状态从他们已经摆好的硬币堆开始。如果存在 和 ,当第 堆中的第 个硬币在一种排列方式中为蓝色,在另一种为红色,则认为这两个初始排列方式是不同的。
由于答案可能很大,输出答案对 取模后的值即可。
输入格式
第一行三个整数 和 ,分别表示硬币堆的最大值,每堆中硬币个数和已经摆好的硬币堆数。
接下来 行描述已经摆好的硬币堆,第 行包含一个仅由 N
和 C
组成且长度为 的字符串,表示从底部起第 堆硬币的摆放方式。如果第 个字符为 N
,则第 堆硬币自底向上数第 个硬币为蓝色,否则,这个字符为 C
,表示硬币为红色。
输出格式
输出一行 个整数,第 个整数表示再摆 堆硬币,以满足最终摆放方式是公平的最终摆放方式数。输出对 取模。
3 3 1
CCN
0 1 3
2 1 0
1 0 2
4 2 4
CN
NC
CC
NN
1
提示
对于第一组样例,如果我们不添加任何硬币堆,则最初局面不是公平的。然而,我们可以加一堆排列为 NNC
的硬币——这样两堆硬币的初始状态就是公平的了。我们可以以三种方式添加两堆硬币:[CCN, NNN]
,[NNN, CCN]
和 [NCN, NCN]
。
数据范围与提示
- 在某些子任务中,满足 。
- 在某些子任务中,满足 。
- 在某些子任务中,满足 。
- 在某些子任务中,满足 。
上述每个子任务至少描述了之前子任务中没有出现的一组。