AT_utpc2023_p.Priority Queue 3

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个由 NN 个 + 和 MM 个 - 组成、长度为 N+MN+M 的字符串 SS,以及由 MM 个整数构成的集合 A={A1,A2,…,AM}A=\lbrace A_1,A_2,\dots,A_M\rbrace。

请准备两个集合 X={}X=\lbrace \rbrace、Y={}Y=\lbrace \rbrace,按照 i=1,2,…,N+Mi=1,2,\dots,N+M 的顺序,依次执行以下操作:

  • 当 SS 的第 ii 个字符为 + 时,从 11 到 NN 的整数中,选择一个既不存在于 XX,也不存在于 YY 的整数,加入集合 XX。
  • 当 SS 的第 ii 个字符为 - 时,从 XX 中取出最小的整数 mm,将其自 XX 中删除,并加入 YY。根据约束条件,进行该操作前 XX 一定非空。

对于 XX 中加入的整数的顺序总共有 N!N! 种可能,其中有多少种顺序能使得一系列操作完成后 Y=AY=A,请输出这个方案数对 998244353998244353 取模的结果。

输入格式

输入通过标准输入按以下格式给出。

NN MM SS A1A_1 A2A_2 …\dots AMA_M

输出格式

请输出一个整数,表示满足条件的方案数对 998244353998244353 取模的值。

输入输出样例

  • 输入#1

    4 2
    ++-++-
    1 3

    输出#1

    4
  • 输入#2

    6 4
    ++-++---++
    2 3 4 6

    输出#2

    48
  • 输入#3

    20 10
    ++++-++++++--+--+-+++++--+-++-
    1 2 3 4 5 6 7 9 12 13

    输出#3

    179396825

说明/提示

样例解释 1

满足条件的一系列操作之一如下:

  • 当 i=1i=1 时,将 33 加入 XX,此时 X={3}, Y={}X=\lbrace 3 \rbrace,\,Y=\lbrace \rbrace。
  • 当 i=2i=2 时,将 44 加入 XX,此时 X={3,4}, Y={}X=\lbrace 3,4 \rbrace,\,Y=\lbrace \rbrace。
  • 当 i=3i=3 时,从 XX 中取出最小的 33,从 XX 移到 YY。此时 X={4}, Y={3}X=\lbrace 4 \rbrace,\,Y=\lbrace 3 \rbrace。
  • 当 i=4i=4 时,将 22 加入 XX,此时 X={2,4}, Y={3}X=\lbrace 2,4 \rbrace,\,Y=\lbrace 3 \rbrace。
  • 当 i=5i=5 时,将 11 加入 XX,此时 X={1,2,4}, Y={3}X=\lbrace 1,2,4 \rbrace,\,Y=\lbrace 3 \rbrace。
  • 当 i=6i=6 时,从 XX 中取出最小的 11,从 XX 移到 YY。此时 X={2,4}, Y={1,3}X=\lbrace 2,4 \rbrace,\,Y=\lbrace 1,3 \rbrace。

样例解释 2

SS 的结尾不一定是 -。

数据范围与约定

  • 所有输入数据均为整数。
  • 1≤M≤N≤3001 \leq M \leq N \leq 300
  • SS 是由 NN 个 + 和 MM 个 - 组成的、长度为 N+MN+M 的字符串。
  • 对于 i=1,2,…,N+Mi=1,2,\dots,N+M,在前 ii 个字符中,- 的数量不超过 + 的数量。
  • 1≤A1<A2<⋯<AM≤N1 \leq A_1 < A_2 < \dots < A_M \leq N。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页