#P16906. [CCO 2026] Walking on a Graph
[CCO 2026] Walking on a Graph
题目描述
有一张包含 个节点的图,节点编号为 到 。每个节点被染成黑色或白色。另外,已知节点 是黑色,节点 是白色。对于任意 ,存在一条从节点 到 的有向边,颜色为红色或蓝色。它的颜色由以下逻辑决定:
- 若 且两个节点颜色相同,则边为红色。
- 若 且两个节点颜色不同,则边为蓝色。
- 若 且两个节点颜色相同,则边为蓝色。
- 若 且两个节点颜色不同,则边为红色。
LoBren 最初最喜欢的颜色是蓝色。接着他在图上进行游走(注意,游走允许重复访问顶点和边)。行走时他遵循以下规则:
- 如果当前在节点 ,他最喜欢的颜色变为蓝色。
- 否则,如果当前在节点 ,他最喜欢的颜色变为红色。
- 然后他沿着当前节点的一条颜色与他最喜欢的颜色相同的出边移动。可以证明这样的边一定存在。
- 最后,他可以选择重复上述过程。
按顺序记录他访问过的节点,可以得到一个列表 。求满足以下条件的可能的列表个数(对 取模):
- 列表从节点 开始,在节点 结束。
- 对所有满足 的 ,节点 在列表中最多出现一次。
- 对所有满足 的 ,有 。
可以证明满足条件的列表数量是有限的。
可能还需要说明的是,“mod” 对应大多数编程语言中的 % 运算符,表示除法取余。例如,,。
输入格式
第一行输入包含一个整数 。
接下来一行包含一个长度为 、由字符 和 组成的字符串。若第 个字符为 ,则节点 为黑色;否则为白色。保证节点 为黑色,节点 为白色。
输出格式
输出一行一个整数,即可能的列表数量模 的结果。
4
BWWB
4
12
BWBWBBBWWBBW
3377552
提示
样例输入 #1 的输出解释
图的结构如下:
:::align{center}
:::
实线表示蓝色边,虚线表示红色边。所有可能的路径为:
- $\color{blue}{1}\ \color{blue}{\to}\ \color{red}{\underline{2}}$ (从 1 沿蓝边到 2,此时在 2 最喜欢的颜色变为红)
- $\color{blue}{1}\ \color{blue}{\to}\ \color{blue}{3}\ \color{blue}{\to}\ \color{red}{\underline{2}}$
- $\color{blue}{1}\ \color{blue}{\to}\ \color{blue}{3}\ \color{blue}{\to}\ \color{blue}{4}\ \color{blue}{\to}\ \color{blue}{1}\ \color{blue}{\to}\ \color{red}{\underline{2}}$
- $\color{blue}{1}\ \color{blue}{\to}\ \color{red}{\underline{2}}\ \color{red}{\dashrightarrow}\ \color{red}{\underline{3}}\ \color{red}{\dashrightarrow}\ \color{blue}{1}\ \color{blue}{\to}\ \color{red}{\underline{2}}$
在有下划线的节点上,最喜欢的颜色为红色;在其他节点上则为蓝色。
以下表格展示了可获得的 分的分配情况:
| 分值 | 的范围 | 额外限制 |
|---|---|---|
| 分 | 无。 | |
| 分 | ||
| 分 | 恰好存在 个黑色节点。 | |
| ^ | 存在一个整数 (),使得区间 内的每个节点均为白色,其余节点均为黑色。 | |
| 分 | 黑色节点不超过 个。 | |
| 分 | 无。 |
翻译由 DeepSeek V4 Pro 完成