AT_tupc2022_o Equidistant Binary String
题目描述
设 $S_{n,m}$ 为所有由 $n$ 个字符 `0` 和 $m$ 个字符 `1` 组成、长度为 $n+m$ 的字符串的集合。
对于 $s_1, s_2 \in S_{n,m}$,定义 $s_1, s_2$ 之间的距离 $d(s_1, s_2)$ 为:把字符串 $s_1$ 变换成字符串 $s_2$ 所需要的最小相邻两字符交换次数。
另外,对 $s_1, s_2\in S_{n,m}$,定义 $f(s_1,s_2)$:
- 存在 $d(s_1,t)=d(s_2,t)$ 的字符串 $t\in S_{n,m}$ 时,返回这些 $t$ 中字典序最小的那个;如果不存在这样的 $t$,则返回 $-1$。
---
给定正整数 $n,m$,以及字符串 $T \in S_{n,m}$。试求,有多少对字符串 $(s_1, s_2)\ (s_1, s_2\in S_{n,m})$ 满足 $f(s_1,s_2)=T$。请输出答案对 $998244353$ 取模。
输入格式
输入为一行,格式如下:
> $n\ m\ T$
输出格式
输出一个整数,表示满足要求的 $(s_1, s_2)$ 对数,对 $998244353$ 取模。
说明/提示
### 样例解释 1
$(s_1,s_2)=($ `0011` $,$ `0110` $),($ `0011` $,$ `1001` $),($ `0110` $,$ `0011` $),($ `1001` , `0011` $)$ 满足条件。
例如,对 $(s_1,s_2)=($ `0011` $,$ `0110` $)$,满足 $d(s_1, t)=d(s_2, t)$ 的 $t\in S_{2,2}$ 有 `0101` 和 `1001`,但字典序更小的是 `0101`,因此 $f(s_1, s_2)= $ `0101`。
### 样例解释 2
$(s_1,s_2)=($ `00001` $,$ `10000` $),($ `00010` $,$ `01000` $),($ `01000` $,$ `00010` $),($ `10000` , `00001` $)$ 满足条件。
# 限制
- $1\leq n, m\leq 30$
- $n,m$ 为整数
- $T\in S_{n,m}$
由 ChatGPT 5 翻译