#loj5752. 「CCO 2026」Walking on a Graph

「CCO 2026」Walking on a Graph

#5752. 「CCO 2026」Walking on a Graph

标签: 传统 | 时间限制: 5000 ms | 内存限制: 512 MiB |

题目描述

译自 CCO 2026 Day2 T3「Walking on a Graph」。

有一个包含 NN 个节点的图,节点编号从 11NN。每个节点都被染成黑色或白色。已知节点 11 是黑色,节点 22 是白色。对于任何满足 iji \neq j 的节点对,都存在一条从节点 iijj 的有向边,其颜色为红色或蓝色。边的颜色由以下逻辑确定:

  • i<ji < j 且两个节点颜色相同,则边为红色。
  • i<ji < j 且两个节点颜色不同,则边为蓝色。
  • i>ji > j 且两个节点颜色相同,则边为蓝色。
  • i>ji > j 且两个节点颜色不同,则边为红色。

LoBren 的初始最爱颜色是蓝色。随后他在图上进行行走(注意:行走允许重复经过顶点和边)。他在行走时遵循以下规则:

  • 若他当前位于节点 11,他的最爱颜色变为蓝色。
  • 否则,若他当前位于节点 22,他的最爱颜色变为红色。
  • (若他位于其他节点,其最爱颜色保持不变。)
  • 然后,他从当前节点出发,沿着一条与他当前最爱颜色相同的有向边移动。可以证明,这样的边一定存在。
  • 最后,他可以自主选择是否重复上述过程。

通过按顺序记录他访问的节点,他得到了一个列表 l1,l2,,lLl_1, l_2, \dots, l_L。请计算满足以下条件的可能列表的数量,结果对 109+710^9 + 7 取模:

  • 列表起始于节点 11,终止于节点 22
  • 对于所有 3iN3 \le i \le N,节点 ii 在列表中最多出现一次。
  • 对于所有 3jL3 \le j \le L,满足 lj2ljl_{j - 2} \neq l_j

可以证明,满足此类条件的列表数量是有限的。

提示:mod\bmod 对应于大多数编程语言中的 %\% 运算符,表示除法后的余数。例如,5mod3=25 \bmod 3 = 217mod4=117 \bmod 4 = 1

输入格式

第一行包含一个整数 NN

第二行包含一个长度为 NN 的字符串,由字符 B 和 W 组成。若第 ii 个字符为 B,则节点 ii 为黑色;否则为白色。保证节点 11 是黑色,节点 22 是白色。

输出格式

在一行中输出可能列表的数量,结果对 109+710^9 + 7 取模。

样例 1

输入

4
BWWB

输出

4

该图的结构如下:

实线代表蓝色边,虚线代表红色边。可能的路径为:

在带下划线的节点处,最爱颜色为红色,其余情况下为蓝色。

样例 2

输入

12
BWBWBBBWWBBW

输出

3377552

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 分值 NN 的范围 附加限制
11 44 3N83 \le N \le 8
22 1212 3N203 \le N \le 20
33 1616 3N503 \le N \le 50 恰好存在一个黑色节点
44 1616 存在一个整数 ii (2iN)(2 \le i \le N),使得区间 [2,i][2, i] 内的所有节点均为白色,其余节点均为黑色
55 2424 最多存在 55 个黑色节点
66 2828