CF1455D.Sequence and Swaps

普及/提高-

通过率:0%

时间限制:1.50s

内存限制:512MB

AC君温馨提醒

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

题目描述

You are given a sequence aa consisting of nn integers a1,a2,…,ana_1, a_2, \dots, a_n, and an integer xx. Your task is to make the sequence aa sorted (it is considered sorted if the condition a1≤a2≤a3≤⋯≤ana_1 \le a_2 \le a_3 \le \dots \le a_n holds).

To make the sequence sorted, you may perform the following operation any number of times you want (possibly zero): choose an integer ii such that 1≤i≤n1 \le i \le n and ai>xa_i \gt x, and swap the values of aia_i and xx.

For example, if a=[0,2,3,5,4]a = [0, 2, 3, 5, 4], x=1x = 1, the following sequence of operations is possible:

  1. choose i=2i = 2 (it is possible since a2>xa_2 \gt x), then a=[0,1,3,5,4]a = [0, 1, 3, 5, 4], x=2x = 2;
  2. choose i=3i = 3 (it is possible since a3>xa_3 \gt x), then a=[0,1,2,5,4]a = [0, 1, 2, 5, 4], x=3x = 3;
  3. choose i=4i = 4 (it is possible since a4>xa_4 \gt x), then a=[0,1,2,3,4]a = [0, 1, 2, 3, 4], x=5x = 5.

Calculate the minimum number of operations you have to perform so that aa becomes sorted, or report that it is impossible.

给你一个由 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n 构成的序列 aa,以及一个整数 xx。你的任务是使序列 aa 变为非递减序列(即满足 a1≤a2≤a3≤⋯≤ana_1 \le a_2 \le a_3 \le \dots \le a_n)。

为使序列 aa 有序,你可以执行以下操作任意多次(包括零次):选择一个下标 ii,满足 1≤i≤n1 \le i \le n 且 ai>xa_i > x,然后交换 aia_i 与 xx 的值。

例如,若 a=[0,2,3,5,4]a = [0, 2, 3, 5, 4],x=1x = 1,则以下操作序列是可行的:

  1. 选择 i=2i = 2(可行,因为 a2>xa_2 > x),得到 a=[0,1,3,5,4]a = [0, 1, 3, 5, 4],x=2x = 2;
  2. 选择 i=3i = 3(可行,因为 a3>xa_3 > x),得到 a=[0,1,2,5,4]a = [0, 1, 2, 5, 4],x=3x = 3;
  3. 选择 i=4i = 4(可行,因为 a4>xa_4 > x),得到 a=[0,1,2,3,4]a = [0, 1, 2, 3, 4],x=5x = 5。

请计算使 aa 变为有序所需的最少操作次数;若不可能实现,则报告该情况。

输入格式

The first line contains one integer tt (1≤t≤5001 \le t \le 500) — the number of test cases.

Each test case consists of two lines. The first line contains two integers nn and xx (1≤n≤5001 \le n \le 500, 0≤x≤5000 \le x \le 500) — the number of elements in the sequence and the initial value of xx.

The second line contains nn integers a1a_1, a2a_2, ..., ana_n (0≤ai≤5000 \le a_i \le 500).

The sum of values of nn over all test cases in the input does not exceed 500500.

第一行包含一个整数 tt(1≤t≤5001 \le t \le 500)—— 测试用例的数量。

每个测试用例由两行组成。第一行包含两个整数 nn 和 xx(1≤n≤5001 \le n \le 500,0≤x≤5000 \le x \le 500)—— 序列中元素的个数以及 xx 的初始值。

第二行包含 nn 个整数 a1a_1, a2a_2, ..., ana_n(0≤ai≤5000 \le a_i \le 500)。

输入中所有测试用例的 nn 值之和不超过 500500。

输出格式

For each test case, print one integer — the minimum number of operations you have to perform to make aa sorted, or −1-1, if it is impossible.

对于每个测试用例,输出一个整数——使 aa 变为有序所需的最少操作次数;如果不可能,则输出 −1-1。

输入输出样例

  • 输入#1

    6
    4 1
    2 3 5 4
    5 6
    1 1 3 4 4
    1 10
    2
    2 10
    11 9
    2 10
    12 11
    5 18
    81 324 218 413 324

    输出#1

    3
    0
    0
    -1
    1
    3

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

首页