如下图所示,我们在门前一条笔直的道路上栽了
N 棵树苗。
Output
Sample Input
Sample Output
但是,最近我们发现,如果两棵树苗的距离小于一个常数
D ,这两棵树苗的发育都会受到阻碍。因此我们决定移除一些树苗,从而使任意两棵树苗的距离都不小于
D
,并且我们希望留下的树苗越多越好。
Input
输入的第一行包含一个整数
T (
T > 0)
,表示一共有 T
组测试数据。
对于每组测试数据,第一行包含两个整数
N ,
D (1 ≤
N ≤ 10
5 , 1
≤ D
≤ 10 9
) 。第二行包含
N 个整数
a 1
, a
2 , ...,
a N
(0 <
a 1
< a
2 < ... <
a N
< 10
9 )
,其中 a
i (1 ≤
i ≤
N )
表示第 i
棵树苗的位置。
对于每组测试数据,输出我们最多可以留下多少棵树苗,并且任意两棵树苗的距离都不小于
D
。
5
1 3
7
2 1
3 4
2 2
3 4
7 2
1 2 3 5 6 8 9
7 4
1 2 3 5 6 8 9
1
2
1
4
3
往下搜,找到第一个距离不满足的就删除,还是贴代码吧
#include<iostream> using namespace std; int main() { int T,last,next,d,n,i,ans; cin>>T; while (T--) { ans=0; last=-9000000000; cin>>n>>d; for (i=0;i<n;i++) { cin>>next; if ((next-last)>=d) { ans++; last=next; } } cout<<ans<<endl; } return 0; }