题目名称 4054. [CSP 2024 S]超速检测
输入输出 detect.in/out
难度等级 ★★
时间限制 2000 ms (2 s)
内存限制 512 MiB
测试数据 10
题目来源 Gravatarsyzhaoss 于2024-10-27加入
开放分组 全部用户
提交状态
分类标签
NOIP/CSP 二分法 贪心
分享题解
通过:3, 提交:27, 通过率:11.11%
Gravatar梦那边的美好ET 100 3.601 s 8.59 MiB C++
Gravatar郭帅 100 3.800 s 12.66 MiB C++
GravatarAeeE5x 100 4.661 s 4.28 MiB C++
Gravatar黄天宇 50 13.126 s 57.71 MiB C++
Gravatar黄天乐 40 12.282 s 5.83 MiB C++
Gravatar黄天乐 40 12.424 s 5.85 MiB C++
Gravatar黄天乐 30 15.243 s 5.82 MiB C++
Gravatar黄天乐 30 15.282 s 7.21 MiB C++
Gravatar学习使我快乐 10 7.555 s 4.22 MiB C++
Gravatar学习使我快乐 0 0.043 s 3.31 MiB C++
关于 超速检测 的近10条评论(全部评论)

4054. [CSP 2024 S]超速检测

★★   输入文件:detect.in   输出文件:detect.out   简单对比
时间限制:2 s   内存限制:512 MiB

【题目描述】

小 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-5】

见选手目录下的 detect/detect2.in 与 detect/detect2.ans。

样例2满足 $n, m \leq 10$。

见选手目录下的 detect/detect3.in 与 detect/detect3.ans。

样例3满足特殊性质 A,其中前十组测试数据满足 $n, m \leq 3000$。

见选手目录下的 detect/detect4.in 与 detect/detect4.ans。

样例4满足特殊性质 B,其中前十组测试数据满足 $n, m \leq 3000$。

见选手目录下的 detect/detect5.in 与 detect/detect5.ans。

样例5满足特殊性质 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$。

特殊性质 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$。

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