QOJ.ac

QOJ

Límite de tiempo: 1.0 s Límite de memoria: 256 MB Puntuación total: 100 Hackeable ✓

#17673. 神枪手 Tim

Estadísticas

Tim the Busy Beaver 报名参加了手枪课程以满足体育要求,并希望成为一名精英神枪手。MIT 射击场有 $N$ ($1 \le N \le 3 \cdot 10^5$) 条编号为 $1$ 到 $N$ 的靶道。第 $i$ 条靶道目前有 $A_i$ ($0 \le A_i \le 5 \cdot 10^5$) 个目标排成一排。保证整个射击场中至少有一个目标,Tim the Busy Beaver 必须击落它们。

Tim 的练习枪有无限发子弹,他需要击落每一个目标。在每次射击前,Tim 会选择一条靶道并向该靶道发射 1 发子弹。一旦目标被击中,它就会倒下且不会再重新立起。

然而,Tim 的枪法很差,因此每一发奇数编号的射击都会击中该靶道上的第一个目标,而每一发偶数编号的射击都会错过该靶道上的第一个目标,并击中第二个目标(如果存在的话)。第一发射击编号为 1。

Tim 不允许进行不会击中任何目标的射击,因为这会损坏目标后面的墙壁。请帮助 Tim 找到一个能击落所有目标的射击序列,或者指出不存在这样的序列。

输入格式

每个测试包含多个测试用例。第一行包含一个整数 $t$ ($1 \le t \le 1000$):测试用例的数量。接下来是各测试用例的描述。

每个测试用例包含 2 行。第一行包含 $N$,即靶道的数量。第二行包含 $N$ 个空格分隔的整数 $A_1, A_2, \dots, A_n$,表示每条靶道上的目标数量。

保证所有测试用例中 $A_i$ 的总和不超过 $5 \cdot 10^5$。 保证所有测试用例中 $N$ 的总和不超过 $3 \cdot 10^5$。

输出格式

对于每个测试用例,如果存在击中所有目标的射击序列,则输出 "YES",否则输出 "NO"。答案不区分大小写(例如 "yEs", "yes", "Yes", "YES" 均可)。

令 $A$ 为该测试用例中 $A_i$ 的总和(注意 $A$ 在不同测试用例中可能不同)。如果存在这样的序列,请在单独的一行中输出一个包含 $A$ 个空格分隔整数的序列 $l_1, l_2, \dots, l_A$,其中 $l_i$ 是 Wabbit 在第 $i$ 次射击时应瞄准的靶道编号。如果存在多种解,输出其中任意一个即可。

评分标准

如果 YES/NO 的回答正确,但提供的 $l_i$ 值不正确,你将获得每个子任务 50% 的分数。对于每个测试用例,你必须输出恰好 $A$ 个 $l_i$ 值才能获得部分分数。

  • (30 分):所有测试用例中 $N$ 的总和不超过 2000,且所有测试用例中 $A_i$ 的总和不超过 2000。
  • (70 分):无附加限制。

样例

输入格式 1

3
1
3
1
2
5
1 1 1 1 1

输出格式 1

YES
1 1 1
NO
NO

说明

在第一个测试用例中,只有 1 条靶道且有 3 个目标,Wabbit 可以通过向靶道 1 发射 3 发子弹击落所有目标。如果目标从前到后依次为 $A, B, C$,第一发子弹会击落 $A$,第二发子弹会错过 $B$ 并击落 $C$,最后一发子弹会击落 $B$。

在第二个测试用例中,只有 1 条靶道且有 2 个目标。向靶道 1 发射的第一发子弹会击中前方的目标,但第二发子弹会因为打偏而无法击落剩余的目标。因此,该测试用例不存在射击序列。

在第三个测试用例中,有 5 条靶道,每条靶道各有 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.