CF2150G Counting Is Fun: The Finale

题目描述

[zabutom, Dubmood - Track Tracking](https://soundcloud.com/zabutom/track-tracking-feat-dubmood) ⠀ 给定三个正整数 $x$、$y$ 和 $k$。 同时给定一个二进制字符串 $a$($|a| = x + y$)。 请计算满足下列条件的二进制字符串 $b$ 的个数,结果对 $998\,244\,353$ 取模: - $b$ 中恰好有 $x$ 个 $0$。 - $b$ 中恰好有 $y$ 个 $1$。 - 存在一个整数 $i$($1 \leq i \leq x + y - 1$),使得 $\min \left( f(b_1 b_2 \ldots b_i), f(b_{i+1} b_{i+2} \ldots b_{x+y})\right) \geq k$,其中 $f(s)$ 表示字符串 $s$ 的最长不下降子序列的长度。 - $b$ 的字典序大于 $a$。 【注:】 $^*$ 二进制字符串指只由字符 $0$ 和 $1$ 组成的字符串。 $^\dagger$ 序列 $a$ 是序列 $b$ 的子序列,当且仅当 $a$ 可以通过删除 $b$ 的若干(可以为零或全部)元素得到。例如,$\mathtt{1011101}$ 的子序列有 $\mathtt{0}$、$\mathtt{1}$、$\mathtt{11111}$、$\mathtt{0111}$,但没有 $\mathtt{000}$ 和 $\mathtt{11100}$。 $^\ddagger$ 如果字符串 $p$ 满足以下条件之一被称为字典序大于字符串 $q$: - $q$ 是 $p$ 的前缀,且 $p \ne q$; - 在 $p$ 和 $q$ 第一个不同的位置,$p$ 的该字符比 $q$ 的该字符大。

输入格式

每组测试包含多组测试用例。第一行包含整数 $t$($1 \le t \le 5000$),表示测试用例数量。接下来是每组测试用例的描述。 每组测试用例的第一行包含三个整数 $x$、$y$ 和 $k$($1 \le x, y \le 5000$,$1 \leq k < x + y$)。 每组测试用例的第二行包含一个长度为 $x+y$ 的二进制字符串 $a$,仅包含字符 $0$ 和 $1$。 保证所有测试用例中 $x$ 的和不超过 $5000$,$y$ 的和也不超过 $5000$。

输出格式

对于每组测试用例,输出一个整数,表示满足条件的二进制字符串数量,对 $998\,244\,353$ 取模。

说明/提示

对于第一个测试用例,有两个满足条件的字符串:$\mathtt{01}$ 和 $\mathtt{10}$。 对于第三个测试用例,有四个满足条件的字符串:$\mathtt{0110}$、$\mathtt{1001}$、$\mathtt{1010}$ 和 $\mathtt{1100}$。 由 ChatGPT 5 翻译