问题 5843 --兔兔的疫苗

5843: 兔兔的疫苗★★

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

题目描述

兔兔经营着一家疫苗站,某一天来了n位患者。每位患者最多等待w分钟,即第i位患者到达疫苗站的时间为ti,那么他可以在ti,ti+1,...,ti+w时间接种疫苗。
一大袋疫苗有k剂疫苗,每个患者只需要接种一剂疫苗。每包疫苗打开后有d分钟的活性,超过d分钟一整袋疫苗都没用了,即某袋疫苗在x时刻打开,则它可以在x,x+1,...,x+d时刻使用,在x+d+1时刻已经失效,只能扔掉了。现在请你帮忙计算一下,该天一共需要几大袋疫苗?

输入

第一行,一个整数t(1≤t≤10000),代表数据组数。
每组测试数据的第一行为n,k,d和w (1≤n,k≤2e5, 0≤d,w≤1e6)等4个整数,分别表示患者数量、一大袋疫苗包中疫苗的剂数、疫苗活性持续时间和每位患者最多等待的时间。
第二行为一个非递减序列t1,t2,...,tn(0≤t1≤t2≤…≤tn≤1e6),表示第i位患者到达疫苗站的时间。
测试数据确保所有的n之和不超过200000。

输出

每组测试数据输出一个整数,表示最少需要疫苗的数量。
样例输入
Copy
5
6 3 5 3
1 2 3 10 11 18
6 4 0 0
3 3 3 3 3 4
9 10 2 2
0 1 2 3 4 5 6 7 8
3 10 3 6
10 20 30
5 5 4 4
0 2 4 6 8
样例输出
Copy
2
3
2
3
1

提示

在测试样例1中,第一袋疫苗包在第1分钟打开,并为患者1接种疫苗,并分别在第2和第3分钟用于患者2和3。然后让4号和5号病人等待到第13分钟,并在第13分钟打开第二袋疫苗包为4号和5号患者接种疫苗,在第18分钟为最后一位患者接种疫苗。
在测试样例2中,在第3分钟打开两袋疫苗包,并在患者1、2、3、4和5身上使用五剂。此时这两袋疫苗包还剩下三剂并失去活性,不能用于患者6。当患者6在第4分钟到来时,工作人员需要再打开一袋新的疫苗包,只使用其中的一剂为患者6接种疫苗。

来源

 

[提交][状态]