AT_utpc2023_p.Priority Queue 3
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个由 N 个 + 和 M 个 - 组成、长度为 N+M 的字符串 S,以及由 M 个整数构成的集合 A={A1,A2,…,AM}。
请准备两个集合 X={}、Y={},按照 i=1,2,…,N+M 的顺序,依次执行以下操作:
- 当 S 的第 i 个字符为
+时,从 1 到 N 的整数中,选择一个既不存在于 X,也不存在于 Y 的整数,加入集合 X。 - 当 S 的第 i 个字符为
-时,从 X 中取出最小的整数 m,将其自 X 中删除,并加入 Y。根据约束条件,进行该操作前 X 一定非空。
对于 X 中加入的整数的顺序总共有 N! 种可能,其中有多少种顺序能使得一系列操作完成后 Y=A,请输出这个方案数对 998244353 取模的结果。
输入格式
输入通过标准输入按以下格式给出。
N M S A1 A2 … AM
输出格式
请输出一个整数,表示满足条件的方案数对 998244353 取模的值。
输入输出样例
输入#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=1 时,将 3 加入 X,此时 X={3},Y={}。
- 当 i=2 时,将 4 加入 X,此时 X={3,4},Y={}。
- 当 i=3 时,从 X 中取出最小的 3,从 X 移到 Y。此时 X={4},Y={3}。
- 当 i=4 时,将 2 加入 X,此时 X={2,4},Y={3}。
- 当 i=5 时,将 1 加入 X,此时 X={1,2,4},Y={3}。
- 当 i=6 时,从 X 中取出最小的 1,从 X 移到 Y。此时 X={2,4},Y={1,3}。
样例解释 2
S 的结尾不一定是 -。
数据范围与约定
- 所有输入数据均为整数。
- 1≤M≤N≤300
- S 是由 N 个
+和 M 个-组成的、长度为 N+M 的字符串。 - 对于 i=1,2,…,N+M,在前 i 个字符中,
-的数量不超过+的数量。 - 1≤A1<A2<⋯<AM≤N。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?