CF1967D.Long Way to be Non-decreasing
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
小 R 是一位喜欢非递减数组的魔法师。她有一个长度为 n 的数组,初始为 a1,…,an,其中每个元素都是 [1,m] 之间的整数。她希望这个数组变为非递减的,即 a1≤a2≤…≤an。
为此,她可以进行若干次魔法操作。小 R 有一个长度为 m 的固定数组 b1,…,bm。形式化地说,一次魔法操作定义如下:
- 选择一个集合 S⊆{1,2,…,n}。
- 对于每个 u∈S,将 au 赋值为 bau。
小 R 想知道,至少需要多少次魔法操作才能使初始数组变为非递减。如果无论进行多少次操作都无法实现,输出 −1。
输入格式
每组测试数据包含多组测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例的第一行包含两个整数 n 和 m(1≤n≤106,1≤m≤106),分别表示初始数组的长度和数组元素的取值范围。
第二行包含 n 个整数 a1,…,an(1≤ai≤m),表示初始数组。
第三行包含 m 个整数 b1,…,bm(1≤bi≤m),表示固定的魔法数组。
保证所有测试用例中 n 的总和不超过 106,m 的总和也不超过 106。
输出格式
对于每个测试用例,输出一个整数:使 a1,…,an 变为非递减所需的最少魔法操作次数。如果无法实现,输出 −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,…,an 为 [1,6,3,7,1]。你可以按如下方式选择 S:
- 第一次操作:S=[2,4,5],a=[1,1,3,5,2];
- 第二次操作:S=[5],a=[1,1,3,5,3];
- 第三次操作:S=[5],a=[1,1,3,5,5]。
因此,可以通过 3 次操作使 a1,…,an 变为非递减。可以证明这是最少的操作次数。在第二个样例中,无论如何都无法使 a1,…,an 变为非递减。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?