请登录

5000.数字加减

时间限制:10s 内存限制:256MB

你有一个整数 $s$,初始时 $s=0$。每秒钟你可以在以下两个操作中选择执行至多一个:$s:=s+1$ 或 $s:=s−1$(可以不执行任何一个)。$s$ 需要满足 $n$ 个限制,第 $i$ 个限制是在 $t_i$ 时刻末$s$ 不能在$[l_i,r_i]$ 范围内。

你需要回答 $q$ 个询问,第 $i$ 次询问给出一个时刻 $t_i′$,你需要回答第 $t_i′$ 时刻末在满足限制的情况下 $s$ 有多少种可能的取值(只需要考虑 $t_i′$ 时刻末之前的限制即可)。

输入格式(从终端/标准输入读取)

第一行一个整数 $T(1≤T≤600)$,表示测试数据的组数。

对于每组数据,第一行两个整数 $n$ 和 $q(1≤n,q≤5×10^5 )$,分别表示限制个数和询问个数。

接下来 $n$ 行,第 $i$ 行三个整数 $t_i,l_i,r_i(1≤t_i ≤10^9,−10^9≤l_i≤r_i≤10^9)$,分别表示限制的时刻和限制范围。保证满足 $1≤t_1\lt t_2\lt …\lt t_n≤10^9$ 。

接下来一行 $q$ 个整数 $t_1', t_2',..., t_q' (1 \le t_1' \lt t_2', \lt ... \lt t_q' \le 10^9)$,依次表示第 $1$ 到第 $q$ 个询问的时刻。

保证所有测试数据的 $n$、$q$ 之和均不超过 $10^6$ 。

输出格式(输出至终端/标准输出)

对于每组测试数据,输出一行 $q$ 个整数,第 $i$ 个整数表示第 $i$ 个询问的答案。

输入样例

复制
2
2 3
3 -1 1
5 -2 0
2 3 5
2 2
4 -2 2
5 -10 10
3 5
 \n
 · \n
 ·  · \n
 ·  · \n
 · · \n
 · \n
 ·  · \n
 ·   ·  \n
 · \n

输出样例

复制
5 4 8
7 0
 · · \n
 · \n
来源: 2024“钉耙编程”中国大学生算法设计超级联赛(6)

提交题解

Please login first.

© 2025 FAQs