#CF2136C. 最小化差值

最小化差值

当前没有测试数据。

题目定义

我们定义: 是一个数组,其中所有元素都等于该数组的长度。 例如:[3,3,3][3,3,3][1][1][4,4,4,4][4,4,4,4] 都是块; 而 [1,1,1][1,1,1][2,3,3][2,3,3] 不是块。

如果一个数组可以由任意数量(可以是 0 个)的块拼接得到,那么这个数组称为整洁数组。注意:空数组永远是整洁数组。

给定一个长度为 nn 的数组 aa,求它的最长整洁子序列的长度。

补充定义:如果从数组 aa 中删除任意位置的若干个(可以是 0 个或全部)元素后能得到序列 cc,则称 ccaa 的子序列。

输入格式

每个测试用例包含多组数据。 第一行输入测试用例数量 tt1t1041 \le t \le 10^4)。

每组测试用例格式如下: 第一行输入一个整数 nn1n21051 \le n \le 2 \cdot 10^5),表示数组长度; 第二行输入 nn 个整数 a1,a2,,ana_1,a_2,\dots,a_n1ain1 \le a_i \le n),表示数组元素。

保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5

输出格式

对于每组测试用例,输出一个整数,表示最长整洁子序列的长度。

样例输入

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

样例输出

1
2
4
5
0
5

样例说明

  1. 第一个测试用例:整个数组 [1][1] 是块,因此是整洁数组。
  2. 第二个测试用例:整个数组 [2,2][2,2] 是块,因此是整洁数组。
  3. 第三个测试用例:整个数组 [2,2,1,1][2,2,1,1] 是整洁数组,它由三个块拼接而成:[2,2][2,2][1][1][1][1]
  4. 第四个测试用例:数组 [1,2,3,3,3,1][1,2,3,3,3,1] 的一个最长整洁子序列是 [1,3,3,3,1][1,3,3,3,1]
  5. 第五个测试用例:最长整洁子序列是空数组。