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 的練習槍有無限的子彈,他需要擊落所有的目標。在每次射擊前,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$ 是 Tim 在第 $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 個目標,Tim 可以透過向靶道 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.