#CF2049A. MEX 消除
MEX 消除
A. MEX 消除
单次测试时间限制: 秒 内存限制: 兆字节
巨龙埃维里尔潜入了巫师的城堡,发现了一个神秘的装置,贪玩的它忍不住摆弄(破坏)了起来……
巨龙埃维里尔找到了一个长度为 的非负整数数组 。
在一次操作中,它可以选择数组 的一个非空子数组 ,并将这个子数组替换为整数 。它可以使用任意次数该操作,最终让数组 中只包含 。题目保证在给定限制下,这一目标总是可以达成。
请问完成目标最少需要多少次操作?
若数组 可以通过从数组 的开头删除若干(可以是 个或全部)元素、从末尾删除若干(可以是 个或全部)元素得到,则称 是 的子数组。
整数集合 的最小未出现值(MEX),定义为没有出现在集合中的最小非负整数。
输入格式
每个测试文件包含多组测试数据。 第一行输入一个整数 (),表示测试用例的数量。
每组测试数据的格式如下: 第一行输入一个整数 (),表示数组的长度。 第二行输入 个空格分隔的整数 ()。
保证所有测试用例的 之和不超过 。
输出格式
对于每组测试数据,输出一行一个整数,表示将数组变为全 所需的最少操作次数。
样例输入
10
4
0 1 2 3
6
0 0 0 0 0 0
5
1 0 1 0 1
5
3 1 4 1 5
4
3 2 1 0
7
9 100 0 89 12 2 3
4
0 3 9 0
7
0 7 0 2 0 7 0
1
0
2
0 1
样例输出
1
0
2
1
1
2
1
2
0
1
样例说明
在第一个测试用例中,埃维里尔可以选择子数组 ,将其替换为 。数组从 变为 (选中的子数组已标注下划线)。因此答案为 。
在第二个测试用例中,数组已经全为 ,无需任何操作。
在第三个测试用例中,埃维里尔可以按如下方式变换数组: 。 其中 ,。
在第四个测试用例中,埃维里尔可以选择整个数组作为 ,将数组 变为 。