#P1737. K个子数组

K个子数组

Description

你有一个n​个互不相同的整数组成的数组。你想将其排成非递减的顺序,通过一次如下操作:

将数组分成 k​ 个非空的子数组,让所有的元素都能唯一分到这些子数组中

对这些子数组进行随意排序

按照排序顺序,组成一个新的数组 数组 a​ 是 数组 b​ 的子数组,当数组 a​ 可以通过让数组 b​ 删掉开头的一些数(可以是零个或全部)再删掉结尾的一些数(可以是零个或全部)来得到 现在问是否存在一种具体操作方法使得数组能够排成非递减的顺序?

Input Format

第一行一个整数 t(1 ≤ t ≤ 10^3),表示测试数据的数量

对于每组测试数据,第一行为两个整数 n,k(1≤ k ≤ n ≤ 10^5)

第二行为 n​ 个互不相同的整数 a_1,a_2,...,a_n(0 ≤ |a_i| ≤ 10^9),表示给定的数组

测试数据保证 n 的和不超过 3*10^5

Output Format

对于每组测试数据,输出一行字符串

如果存在某种具体操作方法使得数组可以变成非递减的顺序,则输出 YES

否则输出 NO

3
5 4
6 3 4 2 1
4 2
1 -4 0 -2
5 1
1 2 3 4 5
​YES
NO
YES

Hint

对于第一个测试数据,a=[6,3,4,2,1],k=4,所以具体操作可以为:

将 a 拆分为 k 个子数组 {[6],[3,4],[2],[1]}

将 k 个子数组进行重新排序 {[1],[2],[3,4],[6]}

将重新排序后的数组合并为 [1,2,3,4,6]​,现在数组是非递减顺序了

对于第二个测试数据,没有一种具体操作方法可以让数组仅通过分为 2 个子数组就可以排成非递减顺序

Source

排序