[ARC059F] バイナリハック
题意翻译
小z得到了一个键盘,里面只有$1, 0$和退格键
键$0$可以打出一个$0$的字符串,键$1$同理
退格键可以删除前面打出的那个字符
小z可以操作这个键盘$N$次($N\le5000$),求操作完成后打出来的字符串恰好是$S$的方案数
注意:当前没有字符也可以使用退格键
题目描述
[problemUrl]: https://atcoder.jp/contests/arc059/tasks/arc059_d
しぐはキーボードを製作しました。シンプルさを極限まで追求したこのキーボードには、`0` キー、`1` キー、バックスペースキーの $ 3 $ つしかキーがありません。
手始めに、しぐはこのキーボードで簡単なテキストエディタを操作してみることにしました。このエディタには常に一つの文字列が表示されます(文字列が空のこともあります)。エディタを起動した直後では、文字列は空です。キーボードの各キーを押すと、文字列が次のように変化します。
- `0` キー: 文字列の右端に文字 `0` が挿入される。
- `1` キー: 文字列の右端に文字 `1` が挿入される。
- バックスペースキー: 文字列が空なら、何も起こらない。そうでなければ、文字列の右端の $ 1 $ 文字が削除される。
しぐはエディタを起動し、これらのキーを合計で $ N $ 回押しました。その結果、いまエディタに文字列 $ s $ が表示されています。このようなキーの押し方の個数を $ 10^9\ +\ 7 $ で割った余りを求めてください。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ N $ $ s $
输出格式
最終的にエディタに文字列 $ s $ が表示されるような $ N $ 回のキーの押し方の個数を $ 10^9+7 $ で割った余りを出力せよ。
输入输出样例
输入样例 #1
3
0
输出样例 #1
5
输入样例 #2
300
1100100
输出样例 #2
519054663
输入样例 #3
5000
01000001011101000100001101101111011001000110010101110010000
输出样例 #3
500886057
说明
### 制約
- $ 1\ ≦\ N\ ≦\ 5000 $
- $ 1\ ≦\ |s|\ ≦\ N $
- $ s $ は文字 `0`, `1` のみからなる。
### 部分点
- $ 1\ ≦\ N\ ≦\ 300 $ を満たすデータセットに正解すると、$ 400 $ 点が与えられる。
### Sample Explanation 1
バックスペースキーを `B` と表記すると、次の $ 5 $ 通りの押し方で最終的に表示される文字列が `0` となります: `00B`, `01B`, `0B0`, `1B0`, `BB0`。最後の押し方では、バックスペースキーを押すときに何も起こりません。