#CF2114C. 需要更多数组
需要更多数组
C. 需要更多数组
每次测试时间限制:2 秒
内存限制:256 兆字节
给定一个包含 个整数的数组 。该数组按非递减顺序排序,即对于所有 ,有 。
你可以从数组中移除任意数量的元素(包括不移除任何元素),且不改变剩余元素的顺序。移除后,将进行如下操作:
- 被写入一个新数组;
- 如果 ,那么 被写入一个新数组;否则, 被写入与 相同的数组;
- 如果 ,那么 被写入一个新数组;否则, 被写入与 相同的数组;
- 依此类推。
例如,如果 ,则:
- 被写入新数组,得到数组:;
- ,所以 被添加到现有数组,得到数组:;
- ,所以 被写入一个新数组,得到数组: 和 ;
- ,所以 被写入一个新数组,得到数组:, 和 。
你的任务是移除元素,使得上述算法创建尽可能多的数组。如果移除所有元素,则不会创建任何新数组。
输入
第一行包含一个整数 ()—— 测试用例的数量。
每个测试用例的第一行包含一个整数 ()—— 数组的长度。
每个测试用例的第二行包含 个整数 (,)—— 数组的元素。
保证所有测试用例的 之和不超过 。
输出
对于每个测试用例,输出一个整数 —— 通过移除任意数量元素(可能为零)所能获得的最大数组数量。
示例
输入
6
6
1 2 3 4 5 6
3
1 2 3
4
1 2 2 4
1
2
3
1 4 8
2
1 1
输出
3
2
2
1
3
1
说明
- 在第一个示例中,你可以移除 和 ,得到 ,其形成数组的过程如题目描述所示。
- 在第二个示例中,你需要移除 ,得到 ,然后将写入数组 和 。
- 在第三个示例中,无需移除;对于 ,将写入数组 和 。