Hello 2024
D
01 Tree
Codeforces
2100
原题
← CE →
翻译中…

There is an edge-weighted full binary tree with $n$ leaves. A full binary tree is defined as a tree where every non-leaf vertex has exactly 2 children. For each non-leaf vertex, we label one of its children as the left child and the other as the right child.

翻译中…

The binary tree has a very strange property. For every non-leaf vertex, one of the edges to its children has weight $0$ while the other edge has weight $1$. Note that the edge with weight $0$ can be connected to either its left or right child.

翻译中…

You forgot what the tree looks like, but luckily, you still remember some information about the leaves in the form of an array $a$ of size $n$. For each $i$ from $1$ to $n$, $a_i$ represents the distance$^\dagger$ from the root to the $i$-th leaf in dfs order$^\ddagger$. Determine whether there exists a full binary tree which satisfies array $a$. Note that you do not need to reconstruct the tree.

翻译中…

$^\dagger$ The distance from vertex $u$ to vertex $v$ is defined as the sum of weights of the edges on the path from vertex $u$ to vertex $v$.

翻译中…

$^\ddagger$ The dfs order of the leaves is found by calling the following $\texttt{dfs}$ function on the root of the binary tree.

翻译中…

dfs_order = []

function dfs(v):
    if v is leaf:
        append v to the back of dfs_order
    else:
        dfs(left child of v)
        dfs(right child of v)

dfs(root)

翻译中…

Input

翻译中…

Each test contains multiple test cases. The first line contains a single integer $t$ ($1 \leq t \leq 10^4$) — the number of test cases. The description of the test cases follows.

翻译中…

The first line of each test case contains a single integer $n$ ($2 \le n \le 2\cdot 10^5$) — the size of array $a$.

翻译中…

The second line of each test case contains $n$ integers $a_1, a_2, \ldots, a_n$ ($0 \le a_i \le n - 1$) — the distance from the root to the $i$-th leaf.

翻译中…

It is guaranteed that the sum of $n$ over all test cases does not exceed $2\cdot 10^5$.

翻译中…

Output

翻译中…

For each test case, print "YES" if there exists a full binary tree which satisfies array $a$ and "NO" otherwise.

翻译中…

You may print each letter in any case (for example, "YES", "Yes", "yes", "yEs" will all be recognized as a positive answer).

翻译中…

Note

翻译中…

In the first test case, the following tree satisfies the array.

翻译中…

image

翻译中…

In the second test case, it can be proven that there is no full binary tree that satisfies the array.

翻译中…

样例

Input #1
2
5
2 1 0 1 1
5
1 0 2 1 3
Output #1
YES
NO
InputCopy OutputCopy
题目信息
题号
1919D
所属比赛
时间限制
1 s
内存限制
256 MB
标签
构造
数据结构
并查集
贪心
排序
树

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。