梦回CSP(brackets.cpp/1s/512MB)
题目背景
不知何时,qwq123发现自己来到了CSP2202的考场,由于C**的尿性,四道关于括号序列的题摆在了他的眼前,思考一段时间后,他发现发现自己根本不会2202年的科技,所以根本做不出来,只能打暴力了。
正在他在考场自闭的时候,突然发现数据的生成方式,有些特别。
题目描述
造数据的工作人员确定了括号序列 $S$ 的长度 $n$ 和一个参数 $m$。$S$ 初始时全为 (
。接下来会按照如下流程随机不断进行,直到 $m=0$:
- 在 $[1,n]$ 的范围内均匀随机一个整数,把 $S$ 这一位上的括号取反(左括号变右括号,右括号变左括号)。
- 如果本次操作使得
(
的数量减少了,使 $m$ 的值减 $1$。
为避免出现不合法的括号序列,工作人员只会保留$S$ 中最长合法括号子序列(不要求连续)。他想知道 $S$ 最终的期望长度,以便他看看暴力能水过多少的点。答案模 $998244353$ 。
输入格式
一行两个整数 $n,m$ 。
输出格式
一行一个整数,表示答案。
样例一
输入
2 2
输出
499122177
样例解释
最终括号序列只有 $3$ 种,))
,()
,)(
。其对应的概率分别为 $\frac{1}{2}$,$\frac{1}{4}$,$\frac{1}{4}$。
它们对应的最长合法括号子序列长度分别为 $0,2,0$。所以最终答案为 $\frac{1}{2}$,也即 $499122177$。
样例二
输入
4 2
输出
873463811
数据范围
对于所有数据,保证 $n,m\le 5\times 10^3$ 。
数据点编号 $\;\;\;\;$ | 数据范围 |
---|---|
$1$ $\;\;\;\;$ | $n=1$ |
$2$ $\;\;\;\;$ | $n=2$ |
$3\sim 4$ $\;\;\;\;$ | $n\le 7,m\le 5$ |
$5\sim 7$ $\;\;\;\;$ | $n\le 15,m\le 500$ |
$8\sim 10$ $\;\;\;\;$ | $n,k\le 50$ |
$11\sim 13$ $\;\;\;\;$ | $N\le 500$,$K\le 100$ |
$14\sim 20$ $\;\;\;\;$ | 无限制 |