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 翻译