问题 5940 --兔兔的修改次数

5940: 兔兔的修改次数★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 24  解决: 17
[提交][状态][命题人:]

题目描述

有n个正整数、一个常数x和一个值v,一开始你可以设v为任何非负整数。从头到尾遍历这n个数(不能回头),如果∣v−ai∣>x,那么就需要修改v使得|v-ai|≤x成立。现在兔兔请你帮忙计算修改v的最少次数(一开始设置v时,不算修改)。

输入

第一整数为T,表示有T (1≤T≤10000)组测试样例。
每组测试样例第一行为2个整数n,x (1≤n≤2e5, 1≤x≤1e9) ,分别表示整数个数与对应的常数。第二行为n个整数a1,a2,...an (1≤ai≤1e9).
测试数据保证所有n之和不超过2e5。

输出

对于每组测试数据,输出一个整数,表示修改v的最少次数。
样例输入
Copy
7
5 3
3 8 5 6 7
5 3
3 10 9 8 7
12 8
25 3 3 17 8 6 1 16 15 25 17 23
10 2
1 2 3 4 5 6 7 8 9 10
8 2
2 4 6 8 6 4 12 14
8 2
2 7 8 9 6 13 21 28
15 5
11 4 13 23 7 10 5 21 20 11 17 5 29 16 11
样例输出
Copy
0
1
2
1
2
4
6

提示

在第1组测试数据中,可将v的初始值设为5,从头到尾遍历这5个整数时,都符合|ai-5|<=3。
在第2组测试数据中,可将v的初始值设为3,在a2时,将v更改为10,从第二个数开始到最后一个数都符合|ai-10|<=3.
在第4组测试数据中,可将v的初始值设为3,在a6时,将v更改为8,从第六个数开始到最后一个数都符合|ai-8|<=2.
在第5组测试数据中,可将v的初始值设为4,在a4时,将v更改为6,在a7时,将v更改为12。

来源

 

[提交][状态]