CSPSMK10C. 跳房子(jump)

提交3 通过2
通过率66.7%
文件IO启用
输入文件jump.in
输出文件jump.out
时间限制1000ms
内存限制512MiB
    ID: 14561 传统题 文件IO 输入文件:jump.in 输出文件:jump.out 1000ms 512MiB 尝试: 3 已通过: 2 难度: 提高 上传者: 标签>C++CSP-S考前模拟

题目描述

题目描述

本题输入输出量较大,请选用较为快速的输入输出方式。

现在有 n+1n+1 个位置,编号分别为 0,1,2,…,n0,1,2,\dots,n,小 C 会从 00 出发,并在事先确定一个数 dd,之后每次小 C 都会从它自己的位置 ii 跳到 i+di+d,同时还会有 mm 种奖品,第 ii 种奖品散落在编号在 [li,ri][l_i,r_i] 内的所有位置,每次跳到一个位置小 C 就可以拿走该位置的所有奖品。

虽然小 C 可以直接令 d=1d=1 这样就可以拿到所有奖品,但是好奇的小 C 还是想知道对于某个 dd,他能拿到多少种不同的奖品?小 C 会进行这样的询问 qq 次,你能帮帮他吗?

输入格式

第一行三个整数 n,m,qn,m,q。

接下来 mm 行,第 ii 行两个整数 li,ril_i,r_i。

接下来 qq 行,每行一个整数 dd。

输出格式

对于每次询问,输出一行表示答案。

输入样例

5 5 5
4 5
1 2
5 5
1 2
1 5
1
2
3
4
5

输出样例

5
4
1
2
3

输入样例 #2

1 2 1
1 1
1 1
1

输出样例 #2

2

输入样例 #3

2 4 2
2 2
2 2
2 2
1 2
1
1

输出样例 #3

4
4

说明提示

【样例解释】

当 d=1d=1 时,显然小 C 会取走所有物品,故答案为 55。

当 d=2d=2 时,小 C 会跳到编号分别为 2,42,4 的格子上,拿走奖品的种类分别为 1,2,4,51,2,4,5,故答案为 44。

当 d=3d=3 时,小 C 会跳到编号为 33 的格子上,拿走奖品的种类为 55,故答案为 11。

当 d=4d=4 时,小 C 会跳到编号为 44 的格子上,拿走奖品的种类分别为 1,51,5,故答案为 22。

当 d=5d=5 时,小 C 会跳到编号为 55 的格子上,拿走奖品的种类分别为 1,3,51,3,5,故答案为 33。

【其它样例】

所有样例包含在文件夹 jump 中,其中:

  • ex_jump1.in/out 为样例组 #1。

  • ex_jump2.in/out 满足测试点编号 11 的限制。

【数据范围】

对于全部测试点,$1\le d\le n\le 3\times 10^5,1\le q\le 3\times 10^5,1\le m\le 6\times 10^5,1\le l_i\le r_i\le n$,每个测试点 1010 分。

测试点编号 n,q≤n,q\le m≤m\le 特殊性质
11 100100 200200 无
2∼32\sim 3 30003000 60006000
4∼54\sim 5 3×1053\times 10^5 6×1056\times 10^5 询问的 d≤500d\le 500
6∼76\sim 7 存在正整数 midmid 满足对于所有的 [li,ri][l_i,r_i] 均满足 mid∈[li,ri]mid\in [l_i,r_i]
8∼108\sim 10 无