QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 256 MB Total points: 100 Hackable ✓

#17673. Strzelec Tim

Statistics

Tim, pracowity bóbr, zapisał się na kurs strzelecki, aby zaliczyć wymagania z wychowania fizycznego i chce zostać elitarnym strzelcem. Strzelnica MIT posiada $N$ ($1 \le N \le 3 \cdot 10^5$) torów ponumerowanych od 1 do $N$. Tor $i$ ma obecnie $A_i$ ($0 \le A_i \le 5 \cdot 10^5$) celów ustawionych w rzędzie. Gwarantuje się, że na całej strzelnicy znajduje się co najmniej jeden cel.

Pistolet treningowy Tima ma nieskończoną liczbę naboi, a on musi zestrzelić każdy cel. Przed każdym strzałem Tim wybiera tor i oddaje 1 strzał wzdłuż tego toru. Gdy cel zostanie trafiony, przewraca się i nigdy więcej się nie podnosi.

Jednak celność Tima jest fatalna, więc każdy strzał o nieparzystym numerze trafi w pierwszy cel na torze, podczas gdy każdy strzał o parzystym numerze ominie pierwszy cel na torze i trafi w drugi (jeśli istnieje). Pierwszy strzał to strzał nr 1.

Timowi nie wolno oddać strzału, który nie trafi w żaden cel, ponieważ uszkodziłoby to ścianę za celami. Pomóż Timowi znaleźć sekwencję strzałów, która przewróci każdy cel, lub stwierdź, że taka sekwencja nie istnieje.

Wejście

Każdy test zawiera wiele przypadków testowych. Pierwsza linia zawiera pojedynczą liczbę całkowitą $t$ ($1 \le t \le 1000$): liczbę przypadków testowych. Następnie następuje opis przypadków testowych.

Każdy z $t$ przypadków testowych składa się z 2 linii. Pierwsza linia zawiera $N$, liczbę torów. Druga linia zawiera $N$ liczb całkowitych oddzielonych spacjami $A_1, A_2, \dots, A_n$, oznaczających liczbę celów na każdym torze.

Gwarantuje się, że suma $A_i$ we wszystkich przypadkach testowych nie przekracza $5 \cdot 10^5$. Gwarantuje się, że suma $N$ we wszystkich przypadkach testowych nie przekracza $3 \cdot 10^5$.

Wyjście

Dla każdego przypadku testowego wypisz "YES", jeśli istnieje sekwencja strzałów, która trafia w każdy cel, lub "NO", jeśli taka sekwencja nie istnieje. Odpowiedź można wypisać w dowolnej wielkości liter (wielkimi lub małymi). Na przykład ciągi "yEs", "yes", "Yes" oraz "YES" zostaną uznane za odpowiedzi pozytywne.

Niech $A$ będzie sumą $A_i$ w danym przypadku testowym (zauważ, że $A$ może być różne dla różnych przypadków testowych). Jeśli taka sekwencja istnieje, wypisz w osobnej linii sekwencję $A$ liczb całkowitych oddzielonych spacjami $l_1, l_2, \dots, l_A$, gdzie $l_i$ to tor, w który Wabbit powinien oddać $i$-ty strzał. Jeśli istnieje wiele rozwiązań, wypisz dowolne z nich.

Podzadania

Otrzymasz 50% punktów za każde podzadanie, jeśli odpowiedzi YES/NO są poprawne, ale podane wartości $l_i$ nie są. Dla każdego przypadku testowego musisz wypisać dokładnie $A$ wartości $l_i$, aby otrzymać punkty częściowe.

  • (30 punktów): Suma $N$ we wszystkich przypadkach testowych nie przekracza 2000, a suma $A_i$ we wszystkich przypadkach testowych nie przekracza 2000.
  • (70 punktów): Brak dodatkowych ograniczeń.

Przykład

Wejście 1

3
1
3
1
2
5
1 1 1 1 1

Wyjście 1

YES
1 1 1
NO
NO

Uwagi

W pierwszym przypadku testowym jest tylko 1 tor z 3 celami, a Wabbit może zestrzelić wszystkie cele, oddając 3 strzały w tor 1. Jeśli cele to $A, B$ i $C$ patrząc od przodu do tyłu, pierwszy strzał przewróci $A$, drugi strzał ominie $B$ i przewróci $C$, a ostatni strzał przewróci $B$.

W drugim przypadku testowym jest tylko 1 tor z 2 celami. Pierwszy strzał w tor 1 trafi w przedni cel, ale drugi strzał nie przewróci pozostałego celu, ponieważ go ominie. Zatem dla tego przypadku testowego nie istnieje żadna sekwencja strzałów.

W trzecim przypadku testowym jest 5 torów po 1 celu każdy. Pierwszy strzał w dowolny tor trafi w cel na tym torze, ale drugi strzał nie będzie w stanie trafić w żaden inny cel. Zatem dla tego przypadku testowego nie istnieje żadna sekwencja strzałów.

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.