Минимальное количество дней, необходимое для решения списка вопросов.

Есть N задач с номерами 1..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

Это один из вызовов от интервьюстрит.
Ниже мой подход
Начните с 1-го вопроса и узнайте максимально возможное количество вопросов, которые можно решить, и удалите эти вопросы из списка вопросов. Теперь снова начните с первого элемента оставшегося списка и делайте это до тех пор, пока размер списка вопросов не будет равен 0. Я получаю неправильный ответ от этого метода, поэтому ищу алгоритм для решения этой проблемы.

5
задан archit 14 March 2013 в 12:23
поделиться