QOJ.ac

QOJ

حد الوقت: 1.0 s حد الذاكرة: 1024 MB مجموع النقاط: 100 الصعوبة: [عرض] قابلة للهجوم ✓

#18007. Puzzle: The Artisan of Glimmith

الإحصائيات

在练习了数绘(Fillomino)技巧后,小蓝鱼(Little Cyan Fish)决定在游戏“The Artisan of Glimmith”中进行更多训练。

小蓝鱼首先向你介绍了数绘的规则:

对于一个 $m$ 行 $n$ 列的网格,将其划分为若干个区域(每个区域的单元格必须正交相连),使得任意两个相邻区域的面积不同。 网格中的某些单元格已经填有数字。该数字表示它所属区域的面积。

数绘谜题的一个例子。来源:Puzzle GP 2022 R4

现在小蓝鱼给你一个数绘棋盘,他想让你为这个数绘谜题构造任意一个合法解。

当然,这个问题对小蓝鱼来说太难了,所以你只需要解决 $m = 1$ 的情况。换句话说,给定一行 $n$ 个单元格,你想将这些单元格划分为若干个线段(每个线段完全包含若干个连续的单元格),要求:

  • 任意两个相邻线段的长度不同;
  • 某些单元格包含一些数字,这些数字表示该单元格所属线段的单元格数量(即线段长度)。

小蓝鱼请你判断该棋盘是否存在合法解。如果存在,你还需要输出任意一个合法解。

输入格式

有多个测试用例。输入的第一行包含一个整数 $T$ ($1 \le T$),表示测试用例的数量。

对于每个测试用例,输入的第一行包含一个整数 $n$ ($1 \le n \le 10^6$)。

下一行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$)。如果 $a_i = 0$,表示第 $i$ 个单元格中没有填入数字。否则,表示第 $i$ 个单元格中填入了数字 $a_i$。

保证所有测试用例中 $n$ 的总和不超过 $10^6$。

输出格式

对于每个测试用例,如果不存在任何合法的填数方案,则输出单行 “No”。

否则,输出的第一行包含字符串 “Yes”。下一行输出 $n$ 个整数,表示在你构造的方案中,每个单元格所在线段的长度。如果存在多个满足要求的方案,你可以输出其中任意一个。

样例

输入样例 1

7
3
0 0 0
4
2 0 0 0
4
0 2 0 0
6
0 3 3 0 3 0
10
2 0 0 3 0 0 4 0 0 1
6
0 0 1 1 0 0
6
1 2 3 4 5 6

输出样例 1

Yes
2 2 1
No
Yes
1 2 2 1
No
Yes
2 2 3 3 3 4 4 4 4 1
No
No

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.