「Cfz Round 5」Gnirts 10
题目背景
[English statement](https://www.luogu.com.cn/problem/U517658). **You must submit your code at the Chinese version of the statement.**
---
In Memory of $\text{F}\rule{66.8px}{6.8px}$.
题目描述
题面还是简单一点好。
- 给定 $n, m$,以及一个长为 $n + m$ 的 $\tt{01}$ 串 $S$。
- 对于 $\tt 01$ 串 $T$,定义 $f(T)$ 为 $S$ 的最长的前缀的长度,使得该前缀是 $T$ 的子序列 $^\dagger$。
- 对于每个 **恰包含 $\bm n$ 个 $\tt 1$ 和 $\bm m$ 个 $\tt 0$ 的** $\tt{01}$ 串 $T$,求 $f(T)$ 的和。答案对 $2933256077^\ddagger$ 取模。
$\dagger$:请注意,子序列可以不连续。换句话说,$a$ 是 $b$ 的子序列,当且仅当在 $b$ 中删去 $\geq 0$ 个字符后,可以得到 $a$。注意,空串总是任何串的子序列。
$\ddagger$:模数为质数。
输入输出格式
输入格式
第一行包含两个整数 $n, m$。
第二行包含一个长度为 $n + m$ 的 $\tt 01$ 串 $S$。
输出格式
输出一行一个整数,表示答案对 $2933256077$ 取模后的结果。
输入输出样例
输入样例 #1
2 1
000
输出样例 #1
3
输入样例 #2
5 5
0010111011
输出样例 #2
1391
说明
#### 「样例解释 #1」
所有可能的序列有且仅有公共序列 $\texttt{0}$。因为恰有 $3$ 种不同的 $T$($\tt 110, 101, 011$),所以答案为 $1\times 3 = 3$。
#### 「数据范围」
对于所有测试数据,保证 $1 \leq n, m \leq 3\times 10^6$。
**本题采用捆绑测试。**
- Subtask 0(13 points):$\max(n, m) \leq 5$。
- Subtask 1(13 points):$\max(n, m) \leq 100$。
- Subtask 2(34 points):$\max(n, m) \leq 3 \times 10^3$。
- Subtask 3(40 points):无特殊限制。