CF1542D Priority Queue

题目描述

给定一个序列 $A$,其中每个元素要么是 $+x$ 的形式,要么是 $-$,其中 $x$ 是一个整数。 对于这样一个元素均为 $+x$ 或 $-$ 形式的序列 $S$,定义 $f(S)$ 如下: - 从第一个元素到最后一个元素依次遍历 $S$,并在遍历过程中维护一个多重集 $T$。 - 对于每个元素,如果它是 $+x$ 的形式,则将 $x$ 加入 $T$;否则,从 $T$ 中删除最小的元素(如果 $T$ 为空,则什么也不做)。 - 遍历完所有 $S$ 的元素后,计算 $T$ 中所有元素的和。$f(S)$ 就定义为这个和。 如果序列 $b$ 可以通过从序列 $a$ 中删除零个或多个元素且不改变剩余元素的顺序得到,则称 $b$ 是 $a$ 的一个子序列。对于 $A$ 的所有子序列 $B$,计算 $f(B)$ 的和,并对 $998\,244\,353$ 取模。

输入格式

第一行包含一个整数 $n$($1\leq n\leq 500$)——表示 $A$ 的长度。 接下来的 $n$ 行,每行以操作符 $+$ 或 $-$ 开头。如果操作符为 $+$,则后面跟着一个整数 $x$($1\le x

输出格式

输出一个整数,表示问题的答案,对 $998\,244\,353$ 取模。

说明/提示

在第一个样例中,所有可能的 $B$ 及 $f(B)$ 如下: - $B=\{\}$,$f(B)=0$。 - $B=\{-\}$,$f(B)=0$。 - $B=\{+1, -\}$,$f(B)=0$。 - $B=\{-, +1, -\}$,$f(B)=0$。 - $B=\{+2, -\}$,$f(B)=0$。 - $B=\{-, +2, -\}$,$f(B)=0$。 - $B=\{-\}$,$f(B)=0$。 - $B=\{-, -\}$,$f(B)=0$。 - $B=\{+1, +2\}$,$f(B)=3$。 - $B=\{+1, +2, -\}$,$f(B)=2$。 - $B=\{-, +1, +2\}$,$f(B)=3$。 - $B=\{-, +1, +2, -\}$,$f(B)=2$。 - $B=\{-, +1\}$,$f(B)=1$。 - $B=\{+1\}$,$f(B)=1$。 - $B=\{-, +2\}$,$f(B)=2$。 - $B=\{+2\}$,$f(B)=2$。 这些值的和为 $16$。 由 ChatGPT 4.1 翻译