cur:若 ∣wi−wi−1∣≤D 则 cur += 1,否则 cur = 1(新段至少包含当前点)。答案为扫描过程中 cur 的最大值。注意 n≥1 时答案至少为 1。某工厂的质量检测系统在生产线上连续记录 n 件产品的重量。称重结果依次为 w1,w2,…,wn,并给定一个允许的最大波动值 D。
定义一段连续生产的产品区间 [l,r] 是一个“质量稳定段”,当且仅当对于其中的每一个 i∈[l,r−1] 都满足 ∣wi+1−wi∣≤D。即相邻两件产品的重量波动幅度不超过 D。
请你找出所有质量稳定段中最长的一段长度。
数据范围:产品个数 n 不超过 2×105,所有测试组 n 的总和也不超过 2×105。允许的最大波动值 D 为 0 到 109 之间的整数。每个产品重量的绝对值不超过 109。
第一行包含一个整数 T,表示测试数据组数。 接下来每组数据占两行: 第一行包含两个整数 n 和 D,分别表示当前组的产品数量与允许的最大重量波动值。 第二行包含 n 个整数 w1,w2,…,wn,依次表示每个产品的重量。
对于每组测试数据,输出一行一个整数,表示该组数据中最长质量稳定段的长度。
输入
1
7 1
1 2 3 2 5 6 7
输出
4
说明
数组为 1 2 3 2 5 6 7,最大允许波动 D=1。从左到右扫描:
2;3;4;5 开始,长度变为 1;2;3。
扫描过程中最大长度为 4,对应稳定段 [1,4]。输入
1
4 0
5 5 5 6
输出
3
说明
D=0 要求相邻产品重量必须完全相等。数组 5 5 5 6 中:
前两个 5 差值为 ∣5−5∣=0≤0,继续延伸;
第二个和第三个 5 差值也为 0,当前段长度变为 3;
第三个 5 到 6 的差值为 ∣6−5∣=1>0,因此从 6 重新开始一段。
最长稳定段由前三个连续的 5 组成,长度为 3。
输入
2
3 1000000000
-1000000000 0 1000000000
2 0
1 2
输出
3
1
说明
第一组数据:n=3,D=109。重量为 -1000000000、0、1000000000。相邻波动分别为 ∣0−(−1000000000)∣=109≤D 和 ∣1000000000−0∣=109≤D,整个序列为一个稳定段,长度为 3。
第二组数据:n=2,D=0。重量为 1、2,差值为 ∣2−1∣=1>0,无法组成长度超过 1 的稳定段,因此输出 1。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册