CF1551E.Fixed Points

普及+/提高

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

Consider a sequence of integers a1,a2,…,ana_1, a_2, \ldots, a_n. In one move, you can select any element of the sequence and delete it. After an element is deleted, all elements to the right are shifted to the left by 11 position, so there are no empty spaces in the sequence. So after you make a move, the sequence's length decreases by 11. The indices of the elements after the move are recalculated.

E. g. let the sequence be a=[3,2,2,1,5]a=[3, 2, 2, 1, 5]. Let's select the element a3=2a_3=2 in a move. Then after the move the sequence will be equal to a=[3,2,1,5]a=[3, 2, 1, 5], so the 33-rd element of the new sequence will be a3=1a_3=1 and the 44-th element will be a4=5a_4=5.

You are given a sequence a1,a2,…,ana_1, a_2, \ldots, a_n and a number kk. You need to find the minimum number of moves you have to make so that in the resulting sequence there will be at least kk elements that are equal to their indices, i. e. the resulting sequence b1,b2,…,bmb_1, b_2, \ldots, b_m will contain at least kk indices ii such that bi=ib_i = i.

考虑一个整数序列 a1,a2,…,ana_1, a_2, \ldots, a_n。在一次操作中,你可以选择序列中的任意一个元素并将其删除。被删除元素右侧的所有元素将向左移动一位,从而保证序列中不存在空位。因此,每次操作后,序列长度减少 11,且各元素的下标将重新计算。

例如,设序列为 a=[3,2,2,1,5]a=[3, 2, 2, 1, 5]。若在某次操作中选择删除第 33 个元素 a3=2a_3=2,则操作后的序列为 a=[3,2,1,5]a=[3, 2, 1, 5],此时新序列中第 33 个元素为 a3=1a_3=1,第 44 个元素为 a4=5a_4=5。

给定一个序列 a1,a2,…,ana_1, a_2, \ldots, a_n 和一个整数 kk,你需要求出最少需要多少次操作,使得操作后得到的序列中至少有 kk 个元素满足“元素值等于其下标”,即:设操作后得到的序列为 b1,b2,…,bmb_1, b_2, \ldots, b_m,则其中至少存在 kk 个下标 ii,使得 bi=ib_i = i。

输入格式

The first line contains one integer tt (1≤t≤1001 \le t \le 100) — the number of test cases. Then tt test cases follow.

Each test case consists of two consecutive lines. The first line contains two integers nn and kk (1≤k≤n≤20001 \le k \le n \le 2000). The second line contains a sequence of integers a1,a2,…,ana_1, a_2, \ldots, a_n (1≤ai≤n1 \le a_i \le n). The numbers in the sequence are not necessarily different.

It is guaranteed that the sum of nn over all test cases doesn't exceed 20002000.

第一行包含一个整数 tt(1≤t≤1001 \le t \le 100),表示测试用例的数量。随后是 tt 个测试用例。

每个测试用例由连续的两行组成。第一行包含两个整数 nn 和 kk(1≤k≤n≤20001 \le k \le n \le 2000)。第二行包含一个整数序列 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤n1 \le a_i \le n)。该序列中的数字不一定互不相同。

保证所有测试用例的 nn 之和不超过 20002000。

输出格式

For each test case output in a single line:

  • −1-1 if there's no desired move sequence;
  • otherwise, the integer xx (0≤x≤n0 \le x \le n) — the minimum number of the moves to be made so that the resulting sequence will contain at least kk elements that are equal to their indices.

对于每个测试用例,在一行中输出:

  • 若不存在满足要求的移动序列,则输出 −1-1;
  • 否则,输出整数 xx(0≤x≤n0 \le x \le n)—— 使得最终序列中至少有 kk 个元素等于其下标所需的最少移动次数。

输入输出样例

  • 输入#1

    4
    7 6
    1 1 2 3 4 5 6
    5 2
    5 1 3 2 3
    5 2
    5 5 5 5 4
    8 4
    1 2 3 3 2 2 5 5

    输出#1

    1
    2
    -1
    2

说明/提示

In the first test case the sequence doesn't satisfy the desired condition, but it can be provided by deleting the first element, hence the sequence will be [1,2,3,4,5,6][1, 2, 3, 4, 5, 6] and 66 elements will be equal to their indices.

In the second test case there are two ways to get the desired result in 22 moves: the first one is to delete the 11-st and the 33-rd elements so that the sequence will be [1,2,3][1, 2, 3] and have 33 elements equal to their indices; the second way is to delete the 22-nd and the 33-rd elements to get the sequence [5,2,3][5, 2, 3] with 22 desired elements.

在第一个测试用例中,原序列不满足目标条件,但可以通过删除第一个元素使其满足条件,此时序列为 [1,2,3,4,5,6][1, 2, 3, 4, 5, 6],其中有 66 个元素的值等于其下标(即位置编号)。

在第二个测试用例中,存在两种方式在 22 步操作内达成目标:第一种是删除第 11 个和第 33 个元素,使序列变为 [1,2,3][1, 2, 3],其中 33 个元素的值等于其下标;第二种是删除第 22 个和第 33 个元素,得到序列 [5,2,3][5, 2, 3],其中 22 个元素的值等于其下标。

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

首页