#L4942. 「EGOI2022」子集 mex

「EGOI2022」子集 mex

题目描述

题目译自 European Girls' Olympiad in Informatics 2022 Day1 T1. SubsetMex

多重集合是一个类似集合的元素集合,其中元素可以重复出现。例如,以下是一个多重集合:{0,0,1,2,2,5,5,5,8}\{0,0,1,2,2,5,5,5,8\}

给定一个由非负整数构成的多重集合 SS 和一个不在 SS 中的目标非负整数 nn,你的目标是通过重复以下三步操作,将 nn 插入到 SS 中:

  1. SS 中选择一个(可能为空的)子集 TT。这里的 TT 是一个由 SS 中出现的不同数字组成的集合。
  2. SS 中删除 TT 的元素。(每个元素只删除一次。)
  3. mex(T)\operatorname{mex}(T) 插入到 SS 中,其中 mex(T)\operatorname{mex}(T)TT 中不包含的最小非负整数。Mex 表示最小排除值(minimum excluded)。

你的目标是找出使 nn 成为 SS 中元素所需的最小操作次数。

由于 SS 可能很大,它将以一个长度为 nn 的列表 (f0,,fn1)\left(f_0, \ldots, f_{n-1}\right) 的形式给出,其中 fif_i 表示数字 iiSS 中出现的次数。(注意,nn 是我们试图插入到 SS 中的整数。)

输入格式

第一行包含一个整数 tt (1t200)(1 \leq t \leq 200),表示测试数据的数量。接下来的每两行描述一组测试数据:

  • 每组的第一行包含一个整数 nn (1n50)(1 \leq n \leq 50),表示要插入到 SS 中的整数。
  • 每组测试数据的第二行包含 nn 个整数 f0,f1,,fn1f_0, f_1, \ldots, f_{n-1} (0fi1016)(0 \leq f_i \leq 10^{16}),表示上述多重集合 SS

输出格式

对于每组测试数据,输出一行,包含一个整数,表示满足条件所需的最小操作次数。

样例

输入

2
4
0 3 0 3
5
4 1 0 2 0

输出

4
10

初始时,S={1,1,1,3,3,3}S = \{1,1,1,3,3,3\},目标是让 44 出现在 SS 中。可以按以下步骤操作:

  1. 选择 T={}T = \{\},则 SS 变为 {0,1,1,1,3,3,3}\{0,1,1,1,3,3,3\}
  2. 选择 T={0,1,3}T = \{0,1,3\},则 SS 变为 {1,1,2,3,3}\{1,1,2,3,3\}
  3. 选择 T={1}T = \{1\},则 SS 变为 {0,1,2,3,3}\{0,1,2,3,3\}
  4. 选择 T={0,1,2,3}T = \{0,1,2,3\},则 SS 变为 {3,4}\{3,4\}

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
1 55 n2n \leq 2
2 1717 n20n \leq 20
3 77 fi=0f_i = 0
4 99 fi1f_i \leq 1
5 2020 fi2000f_i \leq 2000
6 99 f01016f_0 \leq 10^{16} 且对于所有 j=1,,n1j=1, \ldots, n-1fj=0f_j = 0
7 1010 存在一个 ii,使得 fi1016f_i \leq 10^{16} 且对于所有 jij \neq ifj=0f_j = 0
8 2323 无附加限制