SubsetMex
시간 제한1초메모리 제한1024 MB
여러 집합의 원소별 개수 f0..fn-1이 주어질 때, 서로 다른 부분집합의 원소를 하나씩 지우고 mex를 넣는 연산을 반복해 n을 집합에 추가하는 최소 연산 횟수를 구합니다.
문제
A multiset is a collection of elements similar to a set, where elements can repeat multiple times. For example, the following is a multiset:
{0, 0, 1, 2, 2, 5, 5, 5, 8}
Given a multiset S defined on non-negative integers, and a target non-negative integer value n such that n does not belong to S, your goal is to insert n into S by using the following 3-step operation, repeatedly:
- Choose a (possibly empty) subset T of S. Here, T is a set of distinct numbers that appear in S.
- Erase elements of T from S. (Remove only one copy of each element.)
- Insert mex(T) into S, where mex(T) is the smallest non-negative integer that does not belong to T. The name mex stands for “minimum excluded” value.
Your goal is to find the minimum number of operations to perform so that n becomes part of S.
Since the size of S may be large, it will be given in the form of a list (f0, …, fn−1) of size n, where fi represents the number of times that the number i appears in S. (Recall that n is the integer we are trying to insert into S.)
입력
The first line contains a single integer t (1 ≤ t ≤ 200) — the number of test cases. Each two of the following lines describe a test case:
- The first line of each test case contains a single integer n (1 ≤ n ≤ 50), representing the integer to be inserted into S.
- The second line of each test case contains n integers f0, f1, …, fn−1 (0 ≤ fi ≤ 1016), representing the multiset S as mentioned above.
출력
For each test case, print a single line containing the minimum number of operations needed to satisfy the condition.
힌트
In the first example, initially, S = {1, 1, 1, 3, 3, 3} and our goal is to have 4 in S. We can do the following:
- choose T = {} then S becomes {0, 1, 1, 1, 3, 3, 3}
- choose T = {0, 1, 3} then S becomes {1, 1, 2, 3, 3}
- choose T = {1} then S becomes {0, 1, 2, 3, 3}
- choose T = {0, 1, 2, 3} then S becomes {3, 4}