bzoj#P2958. 序列染色

序列染色

题目描述

给出一个长度为 nn,由 B\texttt{B}W\texttt{W}X\texttt{X} 三种字符组成的字符串 SS,你需要把每一个 X\texttt{X} 染成 B\texttt{B}W\texttt{W} 中的一个。

对于给出的 kk,问有多少种染色方式使得存在整数 a,b,c,da,b,c,d 使得:

  • 1ab<cdn1\le a\le b<c\le d\le n
  • b=a+k1,d=c+k1b=a+k-1,d=c+k-1
  • Sa=Sa+1==Sb=BS_a=S_{a+1}=\cdots=S_{b}=\texttt{B}
  • Sc=Sc+1==Sd=WS_c=S_{c+1}=\cdots=S_{d}=\texttt{W}

由于方法可能很多,因此只需要输出最后的答案对 109+710^9+7 取模的结果。

输入格式

第一行输入两个正整数 n,kn,k

第二行输入一个长度为 nn 的字符串 SS

输出格式

输出一行,包含一个整数,表示答案

样例输入

5 2
XXXXX

样例输出

4

数据规模与约定

对于 20%20\% 的数据,n20n\leq 20。 对于 50%50\% 的数据,n2×103n\leq 2\times10^3。 对于 100%100\% 的数据,n,k106n,k\leq 10^6

题目来源

中国国家队清华集训 2012-2013 第一天