A1681.疫苗接种
入门
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
AC 狗经营着一个疫苗接种站,帮助人们对抗流感病毒。
在某一天有 n 个病人来到了医院。第 i 名患者会在 ti 时刻来到医院,每一位患者都要求接种疫苗的等待时间不能超过 w 分钟,这意味着第 i 名患者在 ti、ti+1 ......、ti+w 时刻可接种疫苗。
疫苗是一包一包的,每包由 k 剂疫苗组成。每个病人只需要一剂。包装存放在一个特殊的冰箱里。一包疫苗从冰箱里拿出来打开后,就不能再放回去了。疫苗在冰箱外的寿命是 d 分钟。因此,如果一包疫苗在 x 时刻从冰箱中取出并打开,可以用于在 x、x+1、…、x+d 时刻为患者接种。在 x+d+1 时刻,该包装的所有剩余未使用剂量都被扔掉了。
假设疫苗接种站有足够的工作人员在每个时刻进行任意数量的疫苗接种。为所有 n 名患者接种疫苗所需的最低疫苗包数是多少?
输入格式
输入的第一行 T(1≤t≤103),表示有 T 个测试用例。
每一个测试用例的第一行包含四个整数:n、k、d 和 w (1≤n,k≤104,0≤d,w≤106)。分别表示患者人数、每包疫苗的剂量、疫苗在冰箱外可以存活的时间和每个患者可以等待的时间。
每个测试用例的第二行包含一个非递减序列 t1,t2,…,tn(0 ≤t1 ≤t2≤ …≤tn≤106)。该序列的第 i 个元素是第 i 名患者来到疫苗接种站的时刻。
输出格式
对于每个测试用例输出一个整数,为这 n 名患者接种疫苗所需的最小疫苗包数。
输入输出样例
输入#1
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
输出#1
2 3 2 3 1
说明/提示
在第一个例子中,第一个包装可以在第 1 分钟打开,为患者 1 接种疫苗。该疫苗可以分别在第 2 分钟和第 3 分钟用于患者 2 和 3。然后工作人员需要让 4 号和 5 号病人到第 13 分钟。在第 13 分钟,工作人员打开第二个疫苗包,为 4 号和 5 号患者接种疫苗。最后,最后一名患者在第 18 分钟到来,并立即接种第二包最后一剂。
在第二个例子中,疫苗应该在从冰箱里取出的那一刻使用。此外,所有的病人都希望在他们来的同时得到服务。这意味着工作人员需要在第 3 时刻打开两包,并在患者 1、2、3、4 和 5 身上使用五剂。这两包中还有三剂,但不能用于 6 号患者。当患者 6 在第 4 时刻到来时,工作人员需要打开一个新的包装,只使用其中的一剂。