Electro Master

题目背景

I might be wrong.

题目描述

考虑一个由四种微观粒子构成的系统:正负 A 子 $\text{a}^+,\text{a}^-$,正负 B 子 $\text{b}^+,\text{b}^-$。 一开始,一条直线上放置了 $n$ 个 A 子;然后以某种方式给粒子以初速度,使得带正电荷的粒子向左,反之则向右运动。我们忽略粒子之间的相互作用,认为粒子在加速后速率一定,且均沿直线运动。 当两个粒子相撞时,粒子会反弹,沿着相反的方向继续运动。同时满足如下的变换规律: - 若两种粒子的电荷相同,则无事发生; - 若两种粒子的电荷不同,则改变成另一种同电荷的粒子。 例如:$\text{a}^-$ 和 $\text{b}^+$ 相撞后,$\text{a}^-$ 会变成 $\text{b}^-$,$\text{b}^+$ 会变成 $\text{a}^+$,并各自沿着相反的方向运动。 定义一种摆放方式的权值为,经过足够长的时间后,在左侧收集到的 B 子个数。 现在已经确定了一些 A 子的正负性,剩下的 A 子可能带正电,也有可能带负电。请求出对于所有可能方案的权值之和。 你需要将答案对 $998\,244\,353$ 取模。

输入输出格式

输入格式


输入一行一个长为 $n$ 的字符串 $s$,代表从左到右的 A 子的正负性。具体而言: - 若 $s_i$ 为 `+`,则第 $i$ 个 A 子带正电; - 若 $s_i$ 为 `-`,则第 $i$ 个 A 子带负电; - 若 $s_i$ 为 `?`,则第 $i$ 个 A 子可能带正电,也可能带负电。

输出格式


输出一行一个数,代表答案对 $998\,244\,353$ 取模后的结果。

输入输出样例

输入样例 #1

+?+-

输出样例 #1

1

输入样例 #2

??+-?-+

输出样例 #2

11

输入样例 #3

-????-?+?--????

输出样例 #3

2523

说明

#### 样例 1 解释 有两种可能的填法:`+++-` 或 `+-+-`。其权值分别为 $0,1$,所以最终的答案即为 $1$。 ### 数据规模与约定 对于所有数据,保证 $1\le n\le 2000$,$s_i\in \{\texttt{+},\texttt{-},\texttt{?}\}$。 | # | $n\le $ | 特殊性质 | 分值 | | :----------: | :----------: | :----------: | :----------: | | 0 | - | 样例 | $0$ | | 1 | $100$ | $s$ 中没有 `?` | $10$ | | 2 | $100$ | - | $20$ | | 3 | $300$ | $s$ 中 `?` 不超过 $15$ 个 | $15$ | | 4 | $300$ | - | $20$ | | 5 | - | - | $35$ |