当前位置:首页 > 贪心 > 正文
CSPS2024超速检测(提高组B题)
301+

题目大意:n辆车,位置分别在xi,速度分别是vi,加速度分别是ai,在m个位置中,只要其中一个检测到速度超过V就是超速,请问有多少辆车超速?在超速车辆不漏的情况下,最多去掉多少个监测点?

题目描述

小 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

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$ 的加速度行驶。其在行驶了 $\frac{3^2-1^2}{2\times 4}=1$ 的距离,即到达 $2$ 的位置时,速度变为 $3$,并在之后一直超速。因此这辆车会被除了距离最南端 $2$ 的测速仪以外的其他测速仪判定为超速。
– 第四辆车在距离最南端 $5$ 的位置驶入,以 $5$ 的初速度、$-2$ 的加速度行驶。其在行驶了 $\frac{3^2-5^2}{2\times (-2)}$ 的距离,即到达 $9$ 的位置时,速度变为 $3$。因此这辆车在距离最南端 $[5, 9)$ 时超速,会被距离最南端 $5$ 和 $8$ 的两个测速仪判定为超速。
– 第五辆车在距离最南端 6 的位置驶入,以 4 的初速度、−4 的加速度行驶。在其行驶了 $\frac{3^2-4^2}{2\times (-4)}=\frac{7}{8}$ 的距离后,即这辆车到达 $6\frac{7}{8}$ 的位置时,其速度变为 $3$。因此这辆车在距离最南端 $[6,6\frac{7}{8})$ 时超速,但这段区间内没有测速仪,因此不会被判定为超速。

因此第二、三、四辆车会被判定为超速,输出的第一个数为 $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$。

**【数据范围】**

对于所有测试数据,保证:

– $1 \leq T \leq 20$;
– $1 \leq n, m \leq 10^5$,$1 \leq L \leq 10^6$,$1 \leq V \leq 10^3$;
– $0 \leq d_i < L$,$1 \leq v_i \leq 10^3$,$|a_i| \leq 10^3$;
– $0 \leq p_1 < p_2 < \dots < p_m \leq L$。

| 测试点 | $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$,且所有车都不在最北端驶离主干道。

**【提示】**

与加速度有关的定义和公式如下:

– 匀加速运动是指物体在运动过程中,加速度保持不变的运动,即每单位时间内速度的变化量是恒定的。
– 当一辆车的初速度为 $v_0$、加速度 $a\neq 0$,做匀加速运动,则 $t$ 时刻后它的速度 $v_1 = v_0 + a \times t$,它的位移(即行驶路程)$s=v_0\times t+0.5\times a\times t^2$。
– 当一辆车的初速度为 $v_0$、加速度 $a \neq 0$,做匀加速运动,则当它的位移(即行驶路程)为 $s$ 时,这辆车的瞬时速度为 $\sqrt{v_0^2+2\times a\times s}$。
– 当一辆车的初速度为 $v_0$、加速度 $a \neq 0$,在它的位移(即行驶路程)为 $\frac{v_1^2-v_0^2}{2a}$ 时,这辆车的瞬时速度为 $v_1$。

如果你使用浮点数进行计算,需要注意潜在的精度问题。

解题思路

首先,计算出每辆车超速的位置区间,如果不超速,区间为[0, 0]。为了避免冲突,原来的位置信息全部加1,包括L。

接着,预处理监测点的前缀和,只要车辆区间监测点前缀和非零就是超速,我们只需要处理超速车辆。

最后,车辆区间按照左端点排序,贪心利用监测点:当前区间如果与之前检测区间有重合,切重合部分有监测点,那就一起检测;否则之前的“重合”区间至少需要一个监测点,新的区间也需要一个监测点,不能一起检测只能新开一个。总监测点减去启用的就是关闭的。

程序实现

当然,不用二分求距离也是可以的,只是直接用公式算要注意边界问题,速度相等时的位置不算超速!

About

坚决不Copy代码!

本文标签:,,,,,,,,,

报歉!评论已关闭.