CF1617C.Paprika and Permutation

普及-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Paprika loves permutations. She has an array a1,a2,…,ana_1, a_2, \dots, a_n. She wants to make the array a permutation of integers 11 to nn.

In order to achieve this goal, she can perform operations on the array. In each operation she can choose two integers ii (1≤i≤n1 \le i \le n) and xx (x>0x \gt 0), then perform ai:=ai mod xa_i := a_i \bmod x (that is, replace aia_i by the remainder of aia_i divided by xx). In different operations, the chosen ii and xx can be different.

Determine the minimum number of operations needed to make the array a permutation of integers 11 to nn. If it is impossible, output −1-1.

A permutation is an array consisting of nn distinct integers from 11 to nn in arbitrary order. For example, [2,3,1,5,4][2,3,1,5,4] is a permutation, but [1,2,2][1,2,2] is not a permutation (22 appears twice in the array) and [1,3,4][1,3,4] is also not a permutation (n=3n=3 but there is 44 in the array).

帕普里卡热爱排列。她有一个数组 a1,a2,…,ana_1, a_2, \dots, a_n。她希望将该数组变为 11 到 nn 的一个排列。

为达成这一目标,她可以对数组执行若干操作。每次操作中,她可选择两个整数 ii(满足 1≤i≤n1 \le i \le n)和 xx(满足 x>0x \gt 0),然后执行 ai:=ai mod xa_i := a_i \bmod x(即用 aia_i 除以 xx 所得的余数替换 aia_i)。在不同的操作中,所选的 ii 和 xx 可以不同。

请确定使该数组变为 11 到 nn 的一个排列所需的最少操作次数。若不可能实现,则输出 −1-1。

排列是指由 11 到 nn 中 nn 个互不相同的整数组成的数组(顺序任意)。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是排列(数字 22 在数组中出现了两次),[1,3,4][1,3,4] 也不是排列(此时 n=3n = 3,但数组中出现了 44)。

输入格式

Each test contains multiple test cases. The first line contains a single integer tt (1≤t≤1041 \le t \le 10^4) — the number of test cases. Description of the test cases follows.

The first line of each test case contains an integer nn (1≤n≤1051 \le n \le 10^5).

The second line of each test case contains nn integers a1,a2,…,ana_1, a_2, \dots, a_n. (1≤ai≤1091 \le a_i \le 10^9).

It is guaranteed that the sum of nn over all test cases does not exceed 2⋅1052 \cdot 10^5.

每个测试包含多个测试用例。第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4),表示测试用例的数量。随后是测试用例的描述。

每个测试用例的第一行包含一个整数 nn(1≤n≤1051 \le n \le 10^5)。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(1≤ai≤1091 \le a_i \le 10^9)。

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

输出格式

For each test case, output the minimum number of operations needed to make the array a permutation of integers 11 to nn, or −1-1 if it is impossible.

对于每个测试用例,输出使数组成为整数 11 到 nn 的一个排列所需的最少操作次数;如果不可能,则输出 −1-1。

输入输出样例

  • 输入#1

    4
    2
    1 7
    3
    1 5 4
    4
    12345678 87654321 20211218 23571113
    9
    1 2 3 4 18 19 5 6 7

    输出#1

    1
    -1
    4
    2

说明/提示

For the first test, the only possible sequence of operations which minimizes the number of operations is:

  • Choose i=2i=2, x=5x=5. Perform a2:=a2 mod 5=2a_2 := a_2 \bmod 5 = 2.

For the second test, it is impossible to obtain a permutation of integers from 11 to nn.

对于第一个测试用例,唯一能使操作次数最小的操作序列是:

  • 选择 i=2i=2,x=5x=5。执行 a2:=a2 mod 5=2a_2 := a_2 \bmod 5 = 2。

对于第二个测试用例,无法得到一个由 11 到 nn 的整数组成的排列。

输入解题思路,AI测评打分。不知道怎么写?

首页