QOJ.ac

QOJ

時間限制: 2 s 記憶體限制: 1024 MB 總分: 100 可 Hack ✓

#18517. 十一月雨

统计

你正在指挥一场宏大而不断演变的交响乐。乐团由若干乐手组成,每位乐手演奏一个特定的谐波频率(用非负整数表示)。初始时,舞台完全空无一人。经过 $n$ 个连续的步骤,每一步执行一个动作来改变阵容。对于每个步骤 $i = 1, 2, \dots, n$,执行一个操作:

  • 如果操作为 +(进入):一位新乐手加入乐团。你必须决定他们要演奏的精确频率 $b_i$。
  • 如果操作为 -(退出):一位乐手离开舞台。你必须选择当前演奏中某位乐手的频率 $b_i$,并让恰好一位演奏该频率的乐手停止演奏。

在每一步,演出都以“幻音”为锚点。由于交响乐独特的声学效果,幻音永远不会被舞台上的任何人实际演奏。相反,它的音高始终由当前演奏中缺失的最低频率决定。幻音的音高在数学上定义为 mex(最小未出现值)。设 $S$ 是一个非负整数多重集,表示乐团当前演奏的频率集合。最小未出现值 $\operatorname{mex}(S)$ 定义为最小的非负整数 $x$,使得 $x \notin S$。

在第 $i$ 个动作之后,要求幻音必须正好以 $a_i$ 的频率共鸣。

你的任务是判断是否存在一个有效的选定频率序列 $b_1, b_2, \dots, b_n$,能够完美编排每一步所需的幻音进展,如果存在则构造出这样一个序列。

输入格式

本题包含多个测试用例。输入的第一行包含一个整数 $t$($1 \le t \le 3 \cdot 10^5$),表示测试用例的数量。

对于每个测试用例,每场演出用三行描述:

  • 第一行包含一个整数 $n$($1 \le n \le 5000$),表示演出中连续的步骤总数。
  • 第二行包含一个长度为 $n$ 的字符串 $op$,仅由字符 +- 组成。$op_i$ 表示第 $i$ 个动作的性质:+ 表示乐手进入,- 表示乐手退出。
  • 第三行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_i \le n$),表示第 $i$ 个动作后幻音必须达到的精确音高。

保证所有演出的 $n^2$ 之和不超过 $5000^2$。

输出格式

对于每场演出,按如下方式输出结果:

如果不可能编排所需的幻音进展,则输出一行,包含单词 NO

否则输出两行:

  • 第一行必须包含单词 YES
  • 第二行必须包含 $n$ 个非负整数 $b_1, b_2, \dots, b_n$,表示在每个相应步骤中进入或退出的乐手演奏的具体频率。

每个频率 $b_i$ 必须完全满足题目描述的声学约束和操作规则。你可以输出任何有效的非负整数,只要它可以用标准的 64 位有符号整数表示。

如果存在多个满足演出的有效频率序列,你可以输出其中任意一个。

样例

输入格式 1

4
2
++
0 2
3
+++
0 1 3
3
+-+
1 0 2
6
++-+-+
0 2 0 0 0 1

输出格式 1

YES
1 0
YES
2 0 1
NO
YES
1 0 0 7 1 0

说明

样例 1 中有四个测试用例。

  • 在第一个测试用例中,插入 $1$ 保持 mex(幻音)为 $0$,然后插入 $0$ 使 mex 变为 $2$。
  • 在第二个测试用例中,插入 $2,0,1$ 使得 mex 序列为 $0,1,3$。
  • 在第三个测试用例中,第一个操作后 mex 为 $1$,强制插入 $0$;删除它后,再进行一次插入无法使 mex 变为 $2$,因此答案为 NO
  • 在第四个测试用例中,输出的值使得多重集演变,mex 序列为 $0,2,0,0,0,1$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.