atcoder#ARC089D. [ARC089F] ColoringBalls

[ARC089F] ColoringBalls

题目描述

1,2,..,N 1,2,..,N の番号のついた N N 個の白いボールがこの順に一列に並んでいます。 シカのAtCoDeerくんはこれらのボールに赤と青で色を塗りたいと考えています。 ただし、最終的に白のままのボールがある可能性もあります。

長さ K K の文字列 s s が与えられます。 AtCoDeerくんは i=1 i=1 から i=K i=K まで順に次の操作を行います。

  • i i 番目の操作: 連続するボールの区間(空でもよい)を一つ選んで、s s i i 文字目が r なら赤で、 b なら青でそのボール達を塗る

ただし、既に色が塗られているボールに再度色を塗った場合、色は上書きされます。 また、塗料の都合上 まだ色が塗られていない白いボールを直接青で塗ることはできません。 すなわち、s s i i 文字目が b のとき、白いボールを含む区間を選ぶことはできません。

すべての操作が終わったあとにありうるボールの色の列が何通りありうるか求めてください。 答えは大きくなる可能性があるので、 109+7 10^9+7 で割ったあまりを求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N K K s s

输出格式

すべての操作が終わったあとにありうるボールの色の列が何通りあるかを 109+7 10^9+7 で割ったあまりを出力せよ。

题目大意

NN 个白色的小球排成一排,有一个长为 KK 的字符串 SS。接下来进行 KK 次操作。

ii 个操作,选择一段连续的小球(可以为空),若 SS 中第 ii 个字符是 r,则将这些球染成红色;若是 b,则将它们染成蓝色。由于染料的特性,不能直接用蓝色来染白色。

求在进行完所有操作后,所有小球的颜色序列可以有多少种。

109+710^9+7 取模。

2 2
rb
9
5 2
br
16
7 4
rbrb
1569
70 70
bbrbrrbbrrbbbbrbbrbrrbbrrbbrbrrbrbrbbbbrbbrbrrbbrrbbbbrbbrbrrbbrrbbbbr
841634130

提示

制約

  • 1 1 < = <\ = N N < = <\ = 70 70
  • 1 1 < = <\ = K K < = <\ = 70 70
  • s |s| = = K K
  • s s rb のみからなる
  • N,K N,K は整数

Sample Explanation 1

赤をr,青をb,白をwで表すと、最終的にあり得るボールの列は次の 9 9 通りです。 ww, wr, rw, rr, wb, bw, bb, rb, br

Sample Explanation 2

白いボールに直接青を塗ることは出来ないので、 1 1 回目の操作では空の区間を選ぶしかありません。