#T0080. 信号旗的编排
0
信号旗的编排
题目背景
苍梧营地夜间用红黄两色信号旗传递消息。一排 N 个旗位,每个旗位挂一面旗:
红旗记作 R,黄旗记作 Y。
通讯官整理出一条老规矩:整条旗语里不允许出现连续三面黄旗(即不能出现子串 YYY),
否则会被当成“休战”信号误读。其余任意排列都合法。
现在有 n 个旗位,其中 k 个旗位已经被前任通讯官固定挂了旗(给定这些位置与颜色, 固定信息之间不会互相矛盾),其余旗位由你自由决定颜色。
请计算:满足“不含 YYY”且与固定信息一致的编排方案数,对 1 000 000 007 取模。
题目描述
给定 n、k 和 k 条固定信息 (p_i, c_i)(1 ≤ p_i ≤ n,c_i ∈ {R,Y},位置互不相同), 求长度 n、不含连续三个 Y、且在所有固定位置上颜色相符的字符串数量,mod 1e9+7。
输入格式
第一行两个整数 n、k(1 ≤ n ≤ 2000,0 ≤ k ≤ n)。 接下来 k 行,每行一个整数 p_i 和一个字符 c_i(空格分隔);k=0 时没有后续行。
输出格式
一行一个整数:方案数 mod 1 000 000 007。
样例输入 #1
3 0
样例输出 #1
7
样例输入 #2
4 2
1 Y
4 Y
样例输出 #2
3
样例解释
样例 1:长度 3 共 8 种排列,唯一非法的是 YYY,故 7。
样例 2:模式 Y ? ? Y。枚举中间两位:Y R R Y、Y R Y Y、Y Y R Y 合法; Y Y Y Y 含 YYY 非法。共 3 种。
数据范围
- 1 ≤ n ≤ 2000;0 ≤ k ≤ n;固定位置互不相同。
- k=0 时答案即长度 n、不含连续三个 Y 的二元串数量。
冀公网安备13098402000493号