CF1557B.Moamen and k-subarrays

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Moamen and k-subarrays

题目描述

Moamen 有一个包含 nn 个互不相同整数的数组。他想通过以下操作将该数组按非递减顺序排序,每种操作恰好执行一次:

  1. 将数组恰好分成 kk 个非空子数组,使得每个元素恰好属于一个子数组。
  2. 可以任意重新排列这些子数组。
  3. 按新的顺序合并这些子数组。

如果一个序列 aa 是序列 bb 的子数组,则 aa 可以通过从 bb 的开头删除若干(可能为零或全部)元素和从结尾删除若干(可能为零或全部)元素得到。

你能告诉 Moamen 是否存在一种方法,使用上述操作将数组按非递减顺序排序吗?

输入格式

第一行包含一个整数 tt1t1031 \le t \le 10^3),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含两个整数 nnkk1kn1051 \le k \le n \le 10^5)。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n0ai1090 \le |a_i| \le 10^9)。保证所有数字互不相同。

保证所有测试用例中 nn 的总和不超过 31053 \cdot 10^5

输出格式

对于每个测试用例,输出一行字符串。

如果 Moamen 能够将数组排序,输出 "YES"(不带引号);否则输出 "NO"(不带引号)。

你可以用任意大小写输出 "YES" 和 "NO"。

说明/提示

在第一个测试用例中,a=[6,3,4,2,1]a = [6, 3, 4, 2, 1]k=4k = 4,可以按如下方式操作:

  1. aa 分成 {[6],[3,4],[2],[1]}\{ [6], [3, 4], [2], [1] \}
  2. 重新排列为 {[1],[2],[3,4],[6]}\{ [1], [2], [3,4], [6] \}
  3. 合并后得到 [1,2,3,4,6][1, 2, 3, 4, 6],数组已排序。

在第二个测试用例中,无法仅通过分成 22 个子数组来排序。

例如,如果分为 {[1,4],[0,2]}\{ [1, -4], [0, -2] \},可以重新排列为 {[1,4],[0,2]}\{ [1, -4], [0, -2] \}{[0,2],[1,4]}\{ [0, -2], [1, -4] \}。但无论如何合并子数组,都无法得到一个有序数组。

由 ChatGPT 4.1 翻译

样例

3
5 4
6 3 4 2 1
4 2
1 -4 0 -2
5 1
1 2 3 4 5
Yes
No
Yes

在线编程 IDE

建议全屏模式获得最佳体验