AT_arc036_c [ARC036C] 偶然ジェネレータ
题目描述
### 题目简介
有一个长度为$N$的数列,其仅由$0,1$构成。
现在,有一些地方需要填充,这些地方用问号来代替。
需要知道,有几种方案来填充问号,使得无论从数列中取出怎样的**连续的**子数列,其子数列中所包含的$0$的个数和$1$的个数的差都必须在$K$以下。
输入格式
- 在第$1$行中,有两个正整数$N(1 \le N \le 300)$和$K(1 \le K \le N)$。这表示数列的长度为$N$,子数列允许的最大差为$K$。
- 第$2$行提供长度为$N$的字符串,表示这个数列。字符串仅由$0$、$1$和问号构成
- 如果从左起$i$个字符是$0$,则表示随机数表的第$i$个元素必须是$0$。
- 如果从左起$i$个字符是$1$,则表示随机数表的第$i$个元素必须是$1$。
- 如果从左起第$i$个字符是问号,则随机数表的第$i$个元素是$0$和$1$都可以(也就是需要填充)。
输出格式
输出填充数列中问号的方案的总数对$10^9+7$取模,**末尾要换行。**
说明/提示
### 部分点
この問題には部分点が設定されている。
- $ N\ ≦\ 12 $ を満たすデータセットに正解した場合は、$ 10 $ 点が与えられる。
- $ K\ ≦\ 5 $ を満たすデータセットに正解した場合は、上記とは別に $ 30 $ 点が与えられる。
- 追加制約のないデータセットに正解した場合は、上記とは別に $ 60 $ 点が与えられる。
### Sample Explanation 1
乱数表として \\\[$ 0 $, $ 0 $, $ 1 $, $ 1 $, $ 0 $, $ 1 $, $ 1 $, $ 1 $, $ 0 $\\\] を考えます。この乱数表では、$ 0 $ の個数と $ 1 $ の個数の差として考えられる最大値は、左から $ 3 $ 番目の要素を先頭、$ 8 $ 番目の要素を末尾とした長さ $ 6 $ の数列 \\\[$ 1 $, $ 1 $, $ 0 $, $ 1 $, $ 1 $, $ 1 $\\\] における差 $ 4(=\ 5\ -\ 1) $ です。 他にも乱数表 \\\[$ 1 $, $ 0 $, $ 1 $, $ 1 $, $ 0 $, $ 1 $, $ 1 $, $ 1 $, $ 0 $\\\] が条件を満たします。
### Sample Explanation 2
条件を満たす乱数表は存在しません。