/*
小明删数字
时间限制: 1000MS
内存限制: 65536KB
题目描述:
小明有一个长度为 n 的正整数序列,序列中每个数字都在范围 [1, k] 内。
小明现在想要删除这个序列中的若干数字,使得这个序列的最长上升子序列的长度严格小于 k。
他现在想知道:最少需要删除多少个数字?
上升序列是一个长度为 m 的序列 b,满足 b1 < b2 < ... < bm?1 < bm。
子序列是指将原序列删除若干位置(或者不删)之后再从左到右拼接起来得到的一个序列。
最长上升子序列是指原序列删除最少的位置之后形成的子序列是一个上升序列。
例如, [1, 4, 5, 2, 3, 2, 5] 的一个最长上升子序列是 [1, 2, 3, 5],
长度为 4;[1, 2, 3, 4, 5] 的最长上 升子序列就是其本身。
输入描述
第一行一个正整数 T ,表示有 T 组数据。
对于每一组数据,第一行两个正整数 n, k;第二行 n 个正整数 a1, a2, ..., an,表示该序列。
1 ≤ k ≤ n ≤ 105, 1 ≤ T ≤ 5, 1 ≤ ai ≤ k, Σ n ≤ 2 × 105。
输出描述
对于每一组数据输出一行一个非负整数,表示最少需要删除的数字。
4
5 k=3
1 2 3 1 2 / LIS: 1 2 3
5 k=1
1 1 1 1 1 / LIS: 1
10 k=4
1 2 1 2 3 4 3 3 4 4 / LIS: 1 2 3 4
9 k=3 / LIS: 1 2 3
1 2 2 1 1 3 2 3 3
样例输入
4
5 3
1 2 3 1 2
5 1
1 1 1 1 1
10 4
1 2 1 2 3 4 3 3 4 4
9 3
1 2 2 1 1 3 2 3 3
样例输出
1
5
2
2
提示
删除的数字用下划线表明。方案可能不止一种。
第一组样例,[*1, 2, 3, 1, 2];*1/*2/*3
第二组样例,[*1, *1, *1, *1, *1];5个1都要删除
第三组样例,[*1, 2, *1, 2, 3, 4, 3, 3, 4, 4];
第四组样例,[*1, 2, 2, 1, 1, 3, *2, 3, 3]。
删掉1个数,然后继续找最长上升子序列,把子序列中的数在整个数组中出现的次数最少删掉。
*/
参考:https://leetcode-cn.com/circle/discuss/tMND69/view/NH7uFr/