编程题

超速检测(detect)

题目描述

小 D 新入职了某国的交管部门,他的第一个任务是负责国家的一条长度为 L 的南 北主干道的车辆超速检测。为了考考小 D,上司首先需要他解决一个简化的场景。

这个周末,主干道上预计出现 n 辆车,其中第 i 辆车从主干道上距离最南端 di 的 位置驶入,以 vi 的初速度和 ai 的加速度做匀加速运动向北行驶。我们只考虑从南向北 的车辆,故 vi > 0,但 ai 可正可负,也可以为零。当车辆行驶到主干道最北端(即距离 最南端为 L 的位置)或速度降为0(这只可能在 ai < 0 时发生)时,我们认为该车驶离主干道。


主干道上设置了 m 个测速仪,其中第 j 个测速仪位于主干道上距离最南端 pj 的位 置,每个测速仪可以设置开启或关闭。当某辆车经过某个开启的测速仪时,若这辆车的 瞬时速度超. 过. 了道路限速 V ,那么这辆车就会被判定为超速。注意当车辆驶入与驶出主 干道时,如果在对应位置有一个开启的测速仪,这个测速仪也会对这辆车进行测速。

上司首先想知道,如果所有测速仪都是开启的,那么这 n 辆车中会有多少辆车被判 定为超速。


其次,为了节能,部门想关闭一部分测速仪。然而,他们不希望漏掉超速的车,也 就是说,当 n 辆车里的某辆车在所有测速仪都开启时被判定为超速,他们希望在关闭一 部分测速仪以后它依然被判定为超速。上司还想知道在这样的条件下最多可以关闭多少 测速仪。


由于 n 很大,上司允许小 D 使用编程解决这两个问题,于是小 D 找到了你。

如果你对于加速度并不熟悉,小 D 贴心地在本题的“提示”部分提供了有关加速 度的公式。

输入格式

从文件 detect.in 中读入数据。

输入的第一行包含一个正整数 T,表示数据组数。

接下来包含 T 组数据,每组数据的格式如下:

第一行包含四个整数 n, m, L, V ,分别表示车辆数量、测速仪数量、主干道长度和

道路限速。 

接下来 n 行: 第 i 行包含三个整数 di, vi, ai 描述一辆车。

最后一行包含 m 个整数 p1, p2, · · · , pm 描述道路上所有测速仪的位置。

输出格式

输出到文件 detect.out 中。

对于每组数据:输出一行包含两个整数,第一个整数为所有测速仪都开启时被判定为超速的车辆数量,第二个整数为在不漏掉超速车辆的前提下最多可以关闭的测速仪数量。

样例 1 输入

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

样例 1 输出 

3 3

样例 1 解释

在该组测试数据中,主干道长度为 15,限速为 3,在距离最南端 2, 5, 8, 9, 15 的位置 各设有一个测速仪。

第一辆车在最南端驶入,以 3 的速度匀速行驶。这辆车在整个路段上都没有超速。

第二辆车在距离最南端 12 的位置驶入,以 4 的速度匀速行驶。在最北端驶离主干道时,它会被距离最南端 15 的测速仪判定为超速。

第三辆车在距离最南端 1 的位置驶入,以 1 的初速度、4 的加速度行驶。其在行驶了 32 −12 = 1 的距离,即到达 2 的位置时,速度变为 3,并在之后一直超速。因 2×4

此这辆车会被除了距离最南端 2 的测速仪以外的其他测速仪判定为超速。

第四辆车在距离最南端 5 的位置驶入,以 5 的初速度、−2 的加速度行驶。其在行驶了 32−52 = 4 的距离,即到达 9 的位置时,速度变为 3。因此这辆车在距离 2×(−2)

最南端 [5, 9) 时超速,会被距离最南端 5 和 8 的两个测速仪判定为超速。

第五辆车在距离最南端 6 的位置驶入,以 4 的初速度、−4 的加速度行驶。在其 行驶了 32−42 = 7 的距离后,即这辆车到达 67 的位置时,其速度变为 3。因此这辆车在距离最南端 [6, 6 87 ) 时超速,但这段区间内没有测速仪,因此不会被判定为超速。

因此第二、三、四辆车会被判定为超速,输出的第一个数为 3。 我们可以关闭距离最南端 2, 8, 9 的三个测速仪,保留 5 和 15 的两个测速仪,此时三辆之前被判定为超速的车依然被判定为超速。可以证明不存在更优方案,因此输出的 第二个数为 3。

查看答案
赣ICP备20007335号-2