小宇
题号:NC296733
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}给定一个长度为 n 的数组 \{a_1, a_2, \dots, a_n\}
\hspace{15pt}你可以进行以下操作多次:
\hspace{23pt}\bullet\,选择一个整数 x,将所有满足 a_i = x 的元素分别修改为它们的下标 i
\hspace{15pt}问 最少需要进行多少次操作,才能使数组变为严格单调递增?
\hspace{15pt}严格单调递增:若数组 \{b_1,b_2,\dots,b_n\} 对任意下标 i<j 都满足 b_i < b_j,则称其为严格单调递增数组。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1 \leqq T \leqq 10^4\right),代表数据组数,每组测试数据描述如下; 
\hspace{15pt}第一行输入一个整数 n\left(1 \leqq n \leqq 2 \times 10^5\right),表示数组的长度;
\hspace{15pt}第二行输入 n 个整数 a_1, a_2, \dots, a_n\left(1 \leqq a_i \leqq 10^9\right),表示数组的元素;
\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 2 \times 10^5

输出描述:

\hspace{15pt}对于每组测试数据,新起一行,输出一个整数,表示将数组修改为严格单调递增所需的最少操作次数。
示例1

输入

复制
2
5
1 1 3 2 5
4
2 2 2 2

输出

复制
2
1