#P11487. 「Cfz Round 5」Gnirts 10

    ID: 9935 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>洛谷原创O2优化组合数学洛谷月赛

「Cfz Round 5」Gnirts 10

背景

In Memory of F\text{F}\rule{66.8px}{6.8px}.

题目描述

题面还是简单一点好。

  • 给定 n,mn, m,以及一个长为 n+mn + m 的 01\tt{01} 串 SS。
  • 对于 01\tt 01 串 TT,定义 f(T)f(T) 为 SS 的最长的前缀的长度,使得该前缀是 TT 的子序列 †^\dagger。
  • 对于每个 恰包含 n\bm n 个 1\tt 1 和 m\bm m 个 0\tt 0 的 01\tt{01} 串 TT,求 f(T)f(T) 的和。答案对 2933256077‡2933256077^\ddagger 取模。

†\dagger:请注意,子序列可以不连续。换句话说,aa 是 bb 的子序列,当且仅当在 bb 中删去 ≥0\geq 0 个字符后,可以得到 aa。注意,空串总是任何串的子序列。

‡\ddagger:模数为质数。

输入格式

第一行包含两个整数 n,mn, m。

第二行包含一个长度为 n+mn + m 的 01\tt 01 串 SS。

输出格式

输出一行一个整数,表示答案对 29332560772933256077 取模后的结果。

2 1
000
3
5 5
0010111011
1391

提示

「样例解释 #1」

所有可能的序列有且仅有公共序列 0\texttt{0}。因为恰有 33 种不同的 TT(110,101,011\tt 110, 101, 011),所以答案为 1×3=31\times 3 = 3。

「数据范围」

对于所有测试数据,保证 1≤n,m≤3×1061 \leq n, m \leq 3\times 10^6。

本题采用捆绑测试。

  • Subtask 0(13 points):max⁡(n,m)≤5\max(n, m) \leq 5。
  • Subtask 1(13 points):max⁡(n,m)≤100\max(n, m) \leq 100。
  • Subtask 2(34 points):max⁡(n,m)≤3×103\max(n, m) \leq 3 \times 10^3。
  • Subtask 3(40 points):无特殊限制。