[ARC089F] ColoringBalls
题意翻译
有 $N$ 个白色的小球排成一排,有一个长为 $K$ 的字符串 $S$。接下来进行 $K$ 次操作。
第 $i$ 个操作,选择一段连续的小球(可以为空),若 $S$ 中第 $i$ 个字符是 `r`,则将这些球染成红色;若是 `b`,则将它们染成蓝色。由于染料的特性,不能直接用蓝色来染白色。
求在进行完所有操作后,所有小球的颜色序列可以有多少种。
对 $10^9+7$ 取模。
题目描述
[problemUrl]: https://atcoder.jp/contests/arc089/tasks/arc089_d
$ 1,2,..,N $ の番号のついた $ N $ 個の白いボールがこの順に一列に並んでいます。 シカのAtCoDeerくんはこれらのボールに赤と青で色を塗りたいと考えています。 ただし、最終的に白のままのボールがある可能性もあります。
長さ $ K $ の文字列 $ s $ が与えられます。 AtCoDeerくんは $ i=1 $ から $ i=K $ まで順に次の操作を行います。
- $ i $ 番目の操作: 連続するボールの区間(**空でもよい**)を一つ選んで、$ s $ の $ i $ 文字目が `r` なら赤で、 `b` なら青でそのボール達を塗る
ただし、既に色が塗られているボールに再度色を塗った場合、色は上書きされます。 また、塗料の都合上 **まだ色が塗られていない白いボールを直接青で塗ることはできません**。 すなわち、$ s $ の $ i $ 文字目が `b` のとき、白いボールを含む区間を選ぶことはできません。
すべての操作が終わったあとにありうるボールの色の列が何通りありうるか求めてください。 答えは大きくなる可能性があるので、 $ 10^9+7 $ で割ったあまりを求めてください。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ N $ $ K $ $ s $
输出格式
すべての操作が終わったあとにありうるボールの色の列が何通りあるかを $ 10^9+7 $ で割ったあまりを出力せよ。
输入输出样例
输入样例 #1
2 2
rb
输出样例 #1
9
输入样例 #2
5 2
br
输出样例 #2
16
输入样例 #3
7 4
rbrb
输出样例 #3
1569
输入样例 #4
70 70
bbrbrrbbrrbbbbrbbrbrrbbrrbbrbrrbrbrbbbbrbbrbrrbbrrbbbbrbbrbrrbbrrbbbbr
输出样例 #4
841634130
说明
### 制約
- $ 1 $ $ <\ = $ $ N $ $ <\ = $ $ 70 $
- $ 1 $ $ <\ = $ $ K $ $ <\ = $ $ 70 $
- $ |s| $ $ = $ $ K $
- $ s $ は `r` か `b` のみからなる
- $ N,K $ は整数
### Sample Explanation 1
赤を`r`,青を`b`,白を`w`で表すと、最終的にあり得るボールの列は次の $ 9 $ 通りです。 `ww`, `wr`, `rw`, `rr`, `wb`, `bw`, `bb`, `rb`, `br`
### Sample Explanation 2
白いボールに直接青を塗ることは出来ないので、 $ 1 $ 回目の操作では空の区間を選ぶしかありません。