QOJ.ac

QOJ

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

#17734. 2-kolorowanie drzewa

Statistics

Pracowity bóbr dekoruje choinkę, ale ma dość dziwne preferencje co do używanych kolorów.

Rozważmy kolorowanie wierzchołków drzewa przy użyciu dwóch kolorów: czerwonego i zielonego.

W danym kolorowaniu spójną składową zielonych wierzchołków nazywamy fajną, jeśli co najwyżej dwa czerwone wierzchołki są z nią sąsiednie. Dla drzewa $t$, niech $f(t)$ oznacza maksymalną liczbę fajnych składowych w dowolnym kolorowaniu $t$.

Dane jest drzewo $t$, początkowo zawierające tylko jeden wierzchołek, oznaczony jako wierzchołek $1$. Wykonaj $N$ zapytań; w $i$-tym zapytaniu dodaj wierzchołek liściowy, dołączając go do wierzchołka $a_i$. Istnieją dwa typy przypadków testowych, zależne od zmiennej $X \in \{0, 1\}$:

  • Jeśli $X = 0$, wypisz $f(t)$ po zakończeniu wszystkich zapytań.
  • Jeśli $X = 1$, wypisz $f(t)$ po każdym zapytaniu.

Wejście

Dostępnych jest wiele przypadków testowych. Plik wejściowy rozpoczyna się od $T$ oraz $X$ ($1 \le T \le 4\cdot 10^4$, $X \in \{0, 1\}$), oznaczających odpowiednio liczbę przypadków testowych oraz typ testu.

Pierwsza linia każdego przypadku testowego zawiera liczbę całkowitą $N$ ($1 \le N \le 2 \cdot 10^5$).

Druga linia zawiera $N$ liczb całkowitych $a_1, \dots, a_N$ ($1 \le a_i \le i$).

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

Wyjście

Jeśli $X = 0$, to dla każdego przypadku testowego wypisz $f(t)$ dla końcowego drzewa w pojedynczej linii.

Jeśli $X = 1$, to dla każdego przypadku testowego wypisz $N$ linii, gdzie $i$-ta linia zawiera wartość $f(t)$ po $i$-tym zapytaniu.

Podzadania

  • ($25$ punktów) $X = 0$.
  • ($30$ punktów) Każde $a_i$ jest wybierane jednostajnie losowo z przedziału $[1, i]$.
  • ($45$ punktów) Brak dodatkowych ograniczeń.

Przykład

Przykład 1

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

Wyjście 1

3
5

Przykład 2

2 1
4
1 2 3 3
8
1 2 3 2 3 6 5 7

Wyjście 2

1
2
2
3
1
2
2
3
4
4
4
5

Uwagi

Wyjaśnienie przykładu 1

Dla pierwszego przypadku testowego możemy pokolorować wierzchołki $1$, $2$, $4$ i $5$ na zielono (zauważ, że istnieje $N + 1 = 5$ wierzchołków, ponieważ na początku istnieje już jeden wierzchołek). Wtedy $\{1, 2\}$, $\{4\}$ oraz $\{5\}$ są fajnymi składowymi.

Dla drugiego przypadku testowego możemy pokolorować wierzchołki $1$, $4$, $5$, $6$, $8$ i $9$ na zielono. Wtedy $\{1\}$, $\{4\}$, $\{5, 8\}$, $\{6\}$ oraz $\{9\}$ są fajnymi składowymi.

Wyjaśnienie przykładu 2

Ten przykład zawiera te same drzewa co pierwszy, ale jest typu $X = 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.