CF1557B.Moamen and k-subarrays
普及-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Moamen has an array of n distinct integers. He wants to sort that array in non-decreasing order by doing the following operations in order exactly once:
- Split the array into exactly k non-empty subarrays such that each element belongs to exactly one subarray.
- Reorder these subarrays arbitrary.
- Merge the subarrays in their new order.
A sequence a is a subarray of a sequence b if a can be obtained from b by deletion of several (possibly, zero or all) elements from the beginning and several (possibly, zero or all) elements from the end.
Can you tell Moamen if there is a way to sort the array in non-decreasing order using the operations written above?
莫阿门有一个由 n 个互不相同的整数组成的数组。他希望通过对该数组恰好执行一次如下操作,将其按非递减顺序排序:
- 将数组恰好划分为 k 个非空子数组,使得每个元素恰好属于其中一个子数组;
- 任意重排这些子数组的顺序;
- 按照新的顺序合并这些子数组。
若序列 a 可通过从序列 b 的开头删除若干(可能为零或全部)元素、并从结尾删除若干(可能为零或全部)元素而得到,则称 a 是 b 的一个子数组。
你能否告诉莫阿门:是否存在一种方式,利用上述操作将该数组排序为非递减顺序?
输入格式
The first line contains a single integer t (1≤t≤103) — the number of test cases. The description of the test cases follows.
The first line of each test case contains two integers n and k (1≤k≤n≤105).
The second line contains n integers a1,a2,…,an (0≤∣ai∣≤109). It is guaranteed that all numbers are distinct.
It is guaranteed that the sum of n over all test cases does not exceed 3⋅105.
第一行包含一个整数 t(1≤t≤103)—— 表示测试用例的数量。随后是各测试用例的描述。
每个测试用例的第一行包含两个整数 n 和 k(1≤k≤n≤105)。
第二行包含 n 个整数 a1,a2,…,an(0≤∣ai∣≤109)。保证所有数字互不相同。
保证所有测试用例的 n 之和不超过 3⋅105。
输出格式
For each test case, you should output a single string.
If Moamen can sort the array in non-decreasing order, output "YES" (without quotes). Otherwise, output "NO" (without quotes).
You can print each letter of "YES" and "NO" in any case (upper or lower).
对于每个测试用例,你应该输出一个字符串。
如果 Moamen 能够将数组按非递减顺序排序,则输出 "YES"(不带引号);否则,输出 "NO"(不带引号)。
你可以以任意大小写(大写或小写)输出 "YES" 和 "NO" 中的每个字母。
输入输出样例
输入#1
3 5 4 6 3 4 2 1 4 2 1 -4 0 -2 5 1 1 2 3 4 5
输出#1
Yes No Yes
说明/提示
In the first test case, a=[6,3,4,2,1], and k=4, so we can do the operations as follows:
- Split a into [6],[3,4],[2],[1].
- Reorder them: [1],[2],[3,4],[6].
- Merge them: [1,2,3,4,6], so now the array is sorted.
In the second test case, there is no way to sort the array by splitting it into only 2 subarrays.
As an example, if we split it into [1,−4],[0,−2], we can reorder them into [1,−4],[0,−2] or [0,−2],[1,−4]. However, after merging the subarrays, it is impossible to get a sorted array.
在第一个测试用例中,a=[6,3,4,2,1],且 k=4,因此我们可以按如下方式执行操作:
- 将 a 拆分为 [6],[3,4],[2],[1]。
- 重排这些子数组:[1],[2],[3,4],[6]。
- 合并这些子数组:[1,2,3,4,6],此时数组已排序。
在第二个测试用例中,无法仅通过将数组拆分为 2 个子数组来将其排序。
例如,若将其拆分为 [1,−4],[0,−2],则我们可将它们重排为 [1,−4],[0,−2] 或 [0,−2],[1,−4]。然而,无论以何种顺序合并这些子数组,都不可能得到一个有序数组。
输入解题思路,AI测评打分。不知道怎么写?