CF1967D.Long Way to be Non-decreasing

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述

小 R 是一位喜欢非递减数组的魔法师。她有一个长度为 nn 的数组,初始为 a1,…,ana_1, \ldots, a_n,其中每个元素都是 [1,m][1, m] 之间的整数。她希望这个数组变为非递减的,即 a1≤a2≤…≤ana_1 \leq a_2 \leq \ldots \leq a_n。

为此,她可以进行若干次魔法操作。小 R 有一个长度为 mm 的固定数组 b1,…,bmb_1, \ldots, b_m。形式化地说,一次魔法操作定义如下:

  • 选择一个集合 S⊆{1,2,…,n}S \subseteq \{1, 2, \ldots, n\}。
  • 对于每个 u∈Su \in S,将 aua_u 赋值为 baub_{a_u}。

小 R 想知道,至少需要多少次魔法操作才能使初始数组变为非递减。如果无论进行多少次操作都无法实现,输出 −1-1。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt(1≤t≤1041 \leq t \leq 10^4),表示测试用例的数量。

每个测试用例的第一行包含两个整数 nn 和 mm(1≤n≤1061 \leq n \leq 10^6,1≤m≤1061 \leq m \leq 10^6),分别表示初始数组的长度和数组元素的取值范围。

第二行包含 nn 个整数 a1,…,ana_1, \ldots, a_n(1≤ai≤m1 \leq a_i \leq m),表示初始数组。

第三行包含 mm 个整数 b1,…,bmb_1, \ldots, b_m(1≤bi≤m1 \leq b_i \leq m),表示固定的魔法数组。

保证所有测试用例中 nn 的总和不超过 10610^6,mm 的总和也不超过 10610^6。

输出格式

对于每个测试用例,输出一个整数:使 a1,…,ana_1, \ldots, a_n 变为非递减所需的最少魔法操作次数。如果无法实现,输出 −1-1。

输入输出样例

  • 输入#1

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

    输出#1

    3
    -1
    3

说明/提示

在第一个样例中,初始数组 a1,…,ana_1, \ldots, a_n 为 [1,6,3,7,1][1, 6, 3, 7, 1]。你可以按如下方式选择 SS:

  • 第一次操作:S=[2,4,5]S = [2, 4, 5],a=[1,1,3,5,2]a = [1, 1, 3, 5, 2];
  • 第二次操作:S=[5]S = [5],a=[1,1,3,5,3]a = [1, 1, 3, 5, 3];
  • 第三次操作:S=[5]S = [5],a=[1,1,3,5,5]a = [1, 1, 3, 5, 5]。

因此,可以通过 33 次操作使 a1,…,ana_1, \ldots, a_n 变为非递减。可以证明这是最少的操作次数。在第二个样例中,无论如何都无法使 a1,…,ana_1, \ldots, a_n 变为非递减。

由 ChatGPT 4.1 翻译

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

首页