CF2103D Local Construction

题目描述

在数组 $b_1, b_2, \ldots, b_m$ 中,元素 $b_i$($1 \le i \le m$)是局部最小值当且仅当满足以下至少一个条件: - $2 \le i \le m - 1$ 且 $b_i < b_{i - 1}$ 且 $b_i < b_{i + 1}$,或 - $i = 1$ 且 $b_1 < b_2$,或 - $i = m$ 且 $b_m < b_{m - 1}$。 类似地,元素 $b_i$($1 \le i \le m$)是局部最大值当且仅当满足以下至少一个条件: - $2 \le i \le m - 1$ 且 $b_i > b_{i - 1}$ 且 $b_i > b_{i + 1}$,或 - $i = 1$ 且 $b_1 > b_2$,或 - $i = m$ 且 $b_m > b_{m - 1}$。 注意,对于只有一个元素的数组,局部最小值和局部最大值没有定义。 给定一个隐藏的排列 $^{\text{∗}}$ $p$,其长度为 $n$。对该排列交替执行以下两种操作,从操作 1 开始,直到 $p$ 中只剩一个元素: - 操作 1 —— 删除 $p$ 中所有不是局部最小值的元素。 - 操作 2 —— 删除 $p$ 中所有不是局部最大值的元素。 具体来说,在每次奇数轮迭代时执行操作 1,在每次偶数轮迭代时执行操作 2,直到 $p$ 中只剩一个元素。 对于每个下标 $i$($1 \le i \le n$),设 $a_i$ 为元素 $p_i$ 被删除的轮次编号,若未被删除则设为 $-1$。 可以证明,最多经过 $\lceil \log_2 n \rceil$ 轮迭代后 $p$ 中只剩一个元素(即 $a_i \le \lceil \log_2 n \rceil$)。 给定数组 $a_1, a_2, \ldots, a_n$,你的任务是构造任意一个满足数组 $a$ 的排列 $p$。 $^{\text{∗}}$ 长度为 $n$ 的排列是指由 $1$ 到 $n$ 的 $n$ 个不同整数按任意顺序组成的数组。例如,$[2,3,1,5,4]$ 是一个排列,但 $[1,2,2]$ 不是(因为 $2$ 出现了两次),$[1,3,4]$ 也不是(因为 $n=3$ 但出现了 $4$)。

输入格式

每个测试包含多个测试用例。第一行输入测试用例数量 $t$($1 \le t \le 10^4$)。接下来是各测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($2 \le n \le 2 \cdot 10^5$)——排列 $p$ 的长度。 每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le \lceil \log_2 n \rceil$ 或 $a_i = -1$)——元素 $p_i$ 被删除的轮次编号。 保证所有测试用例的 $n$ 之和不超过 $2 \cdot 10^5$。 保证至少存在一个满足数组 $a$ 的排列 $p$。

输出格式

对于每个测试用例,输出 $n$ 个整数,表示满足数组 $a$ 的排列。 如果有多个解,输出任意一个即可。

说明/提示

在第一个测试用例中,对排列 $[3, 2, 1]$ 执行的操作如下: 1. $[3, 2, 1]$ 的唯一局部最小值是 $1$,因此删除 $3$ 和 $2$。此时只剩一个元素,过程终止。 这满足数组 $a = [1, 1, -1]$,因为 $p_1$ 和 $p_2$ 在第 1 轮被删除,而 $p_3$ 未被删除。 在第二个测试用例中,对排列 $[4, 3, 5, 1, 2]$ 执行的操作如下: 1. $[4, 3, 5, 1, 2]$ 的局部最小值是 $3$ 和 $1$,因此删除 $4$、$5$ 和 $2$。 2. $[3, 1]$ 的唯一局部最大值是 $3$,因此删除 $1$。此时只剩一个元素,过程终止。 这满足数组 $a = [1, -1, 1, 2, 1]$,因为 $p_1$、$p_3$ 和 $p_5$ 在第 1 轮被删除,$p_4$ 在第 2 轮被删除,$p_2$ 未被删除。 在第三个测试用例中,对排列 $[6, 7, 2, 4, 3, 8, 5, 1]$ 执行的操作如下: 1. 局部最小值是 $6$、$2$、$3$ 和 $1$,因此删除 $7$、$4$、$8$ 和 $5$。 2. 局部最大值是 $6$ 和 $3$,因此删除 $2$ 和 $1$。 3. 局部最小值是 $3$,因此删除 $6$。此时只剩一个元素,过程终止。 在第四个测试用例中,一个满足条件的排列是 $[6, 5, 2, 1, 3, 4, 7]$。$1$ 是唯一的局部最小值,因此它会在第一轮后保留。注意,其他排列也可能满足条件,例如 $[6, 4, 3, 1, 2, 5, 7]$ 也是正确的解。 翻译由 DeepSeek V3 完成