A16852. Lost Civilization (Easy Version)
编程题
普及/提高-
知识点
题目描述
这是本题的简单版本。不同版本的区别在于,在本题中你只需要为一个序列计算一个值。只有在你解决了所有版本的问题后,你才能对其进行 hack。
我们定义一种生成包含 $m+k$ 个整数的算法如下:
1. 首先,输入一个长度为 $m$ 的整数序列 $x$。如果 $k=0$,则直接终止并返回序列 $x$。
2. 然后,选择任意一个下标 $1 \le i \le |x|$,并在元素 $x_i$ 之后插入一个数 $(x_i+1)$。
3. 如果 $x$ 的长度恰好等于 $m+k$,则终止并返回序列 $x$。否则,返回第二步继续操作。
Alice 知道古代文明曾经使用这个算法来安全地隐藏他们的秘密。Alice 想要了解他们所隐藏的知识,但要从算法的输出反推输入并不容易。
给定一个长度为 $n$ 的整数序列 $a$,请你求出通过上述算法可能生成 $a$ 的最短初始序列的长度。
我们定义一种生成包含 $m+k$ 个整数的算法如下:
1. 首先,输入一个长度为 $m$ 的整数序列 $x$。如果 $k=0$,则直接终止并返回序列 $x$。
2. 然后,选择任意一个下标 $1 \le i \le |x|$,并在元素 $x_i$ 之后插入一个数 $(x_i+1)$。
3. 如果 $x$ 的长度恰好等于 $m+k$,则终止并返回序列 $x$。否则,返回第二步继续操作。
Alice 知道古代文明曾经使用这个算法来安全地隐藏他们的秘密。Alice 想要了解他们所隐藏的知识,但要从算法的输出反推输入并不容易。
给定一个长度为 $n$ 的整数序列 $a$,请你求出通过上述算法可能生成 $a$ 的最短初始序列的长度。
输入格式
每个测试点包含多个测试用例。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
每个测试用例第一行包含一个整数 $n$($1 \le n \le 300\,000$)。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^9$)。
保证所有测试用例中 $n$ 的总和不超过 $300\,000$。
每个测试用例第一行包含一个整数 $n$($1 \le n \le 300\,000$)。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^9$)。
保证所有测试用例中 $n$ 的总和不超过 $300\,000$。
输出格式
对于每个测试用例,输出可能的最短初始序列的长度,每行一个答案。
输入输出样例
输入 #1
5 5 1 2 3 4 5 5 1 3 5 7 9 5 1 2 5 6 5 7 1 2 4 5 3 7 8 9 9 8 9 2 3 4 4 5 3
输出 #1
1 5 3 4 3
说明/提示
在第一个测试用例中,序列 $[1]$ 可以通过如下过程生成序列 $a=[1,2,3,4,5]$:
$$ [1] \to [1,\color{red}{2}] \to [1,2,\color{red}{3}] \to [1,2,3,\color{red}{4}] \to [1,2,3,4,\color{red}{5}] $$
在第二个测试用例中,唯一能生成 $a=[1,3,5,7,9]$ 的初始序列只能是 $a$ 本身。
由 ChatGPT 5 翻译
$$ [1] \to [1,\color{red}{2}] \to [1,2,\color{red}{3}] \to [1,2,3,\color{red}{4}] \to [1,2,3,4,\color{red}{5}] $$
在第二个测试用例中,唯一能生成 $a=[1,3,5,7,9]$ 的初始序列只能是 $a$ 本身。
由 ChatGPT 5 翻译