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 \notin S$ 的最小非負整數 $x$。

在第 $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.