小 D 新入职了某国的交管部门,他的第一个任务是负责国家的一条长度为 L 的南北主干道的车辆超速检测。为了考考小 D,上司首先需要他解决一个简化的场景。
这个周末,主干道上预计出现 n 辆车,其中第 i 辆车从主干道上距离最南端 d_i 的位置驶入,以 v_i 的初速度和 a_i 的加速度做匀加速运动向北行驶。我们只考虑从南向北的车辆,故 v_i > 0,但 a_i 可正可负,也可以为零。当车辆行驶到主干道最北端(即距离最南端为 L 的位置)或速度降为 0(这只可能在 a_i < 0 时发生)时,我们认为该车驶离主干道。
主干道上设置了 m 个测速仪,其中第 j 个测速仪位于主干道上距离最南端 p_j 的位置,每个测速仪可以设置开启或关闭。当某辆车经过某个开启的测速仪时,若这辆车的瞬时速度超过了道路限速 V,那么这辆车就会被判定为超速。注意当车辆驶入与驶出主干道时,如果在对应位置有一个开启的测速仪,这个测速仪也会对这辆车进行测速。
上司首先想知道,如果所有测速仪都是开启的,那么这 n 辆车中会有多少辆车被判定为超速。
其次,为了节能,部门想关闭一部分测速仪。然而,他们不希望漏掉超速的车,也就是说,当 n 辆车里的某辆车在所有测速仪都开启时被判定为超速,他们希望在关闭一部分测速仪以后它依然被判定为超速。上司还想知道在这样的条件下最多可以关闭多少测速仪。
由于 n 很大,上司允许小 D 使用编程解决这两个问题,于是小 D 找到了你。
如果你对于加速度并不熟悉,小 D 贴心地在本题的“提示”部分提供了有关加速度的公式。
输入的第一行包含一个正整数 T,表示数据组数。
接下来包含 T 组数据,每组数据的格式如下:
第一行包含四个整数 n, m, L, V,分别表示车辆数量、测速仪数量、主干道长度和道路限速。
接下来 n 行:
第 i 行包含三个整数 d_i, v_i, a_i 描述一辆车。
最后一行包含 m 个整数 p_1, p_2, \dots , p_m 描述道路上所有测速仪的位置。
对于每组数据:输出一行包含两个整数,第一个整数为所有测速仪都开启时被判定为超速的车辆数量,第二个整数为在不漏掉超速车辆的前提下最多可以关闭的测速仪数量。
1 5 5 15 3 0 3 0 12 4 0 1 1 4 5 5 -2 6 4 -4 2 5 8 9 15
3 3
【样例 1 解释】
在该组测试数据中,主干道长度为 15,限速为 3,在距离最南端 2, 5, 8, 9, 15 的位置各设有一个测速仪。
因此第二、三、四辆车会被判定为超速,输出的第一个数为 3。
我们可以关闭距离最南端 2, 8, 9 的三个测速仪,保留 5 和 15 的两个测速仪,此时三辆之前被判定为超速的车依然被判定为超速。可以证明不存在更优方案,因此输出的第二个数为 3。
【样例 2】
见选手目录下的 detect/detect2.in 与 detect/detect2.ans。
该组样例满足 n, m \leq 10。
【样例 3】
见选手目录下的 detect/detect3.in 与 detect/detect3.ans。
该组样例满足特殊性质 A,其中前十组测试数据满足 n, m \leq 3000。
【样例 4】
见选手目录下的 detect/detect4.in 与 detect/detect4.ans。
该组样例满足特殊性质 B,其中前十组测试数据满足 n, m \leq 3000。
【样例 5】
见选手目录下的 detect/detect5.in 与 detect/detect5.ans。
该组样例满足特殊性质 C,其中前十组测试数据满足 n, m \leq 3000。
【数据范围】
对于所有测试数据,保证:
测试点 | n,m\leq | 特殊性质 |
---|---|---|
1 | 10 | 无 |
2 | 20 | 无 |
3 | 3000 | A |
4 | 10^5 | A |
5 | 3000 | B |
6 | 10^5 | B |
7 | 3000 | C |
8 | 10^5 | C |
9 | 3000 | 无 |
10 | 10^5 | 无 |
特殊性质 A:保证 a_i = 0。
特殊性质 B:保证 a_i > 0。
特殊性质 C:保证 a_i < 0,且所有车都不在最北端驶离主干道。
【提示】
与加速度有关的定义和公式如下:
如果你使用浮点数进行计算,需要注意潜在的精度问题。
CSP-S 2024