您需要完成编号为 1..N 的 N 个问题。你已经按照难度递增的顺序排列了问题,第 i 个问题估计了难度级别 i。您还为每个问题分配了等级 vi。具有相似 vi 值的问题本质上是相似的。每天,您将选择问题的一个子集并解决它们。您已经决定,当天解决的每个后续问题都应该比您当天解决的前一个问题更难。此外,为了不让它变得无聊,你解决的连续问题应该在他们的 vi 等级上至少相差 K。你可以解决所有问题的最少天数是多少?
输入:第一行包含测试用例 T 的数量。接下来是 T 测试用例。每个案例的第一行包含一个整数 N 和 K,第二行包含整数 v1,...,vn。
输出:输出 T 行,每个测试用例一个,包含可以解决所有问题的最少天数。
约束:
1 <= T <= 100
1 <= N <= 300
1 <= vi <= 1000
1 <= K <= 1000
样本输入:
2
3 2
5 4 7
5 1
5 3 4 5 6
样本输出:
2
1
这是来自 interviewstreet 的挑战之一。
下面是我的方法
从第一个问题开始,找出可以解决的最大问题数量,并从问题列表中删除这些问题。现在再次从剩余列表的第一个元素开始,直到现在问题列表的大小为 0 .我从这种方法中得到了错误的答案,所以寻找一些算法来解决这个挑战。