题目描述
Stuart the Snail 住在一片田野上,这片田野可以被描述为一个无限的二维平面。在田野的每个整数坐标点上都有可以吃的植物,而 Stuart 的家位于原点 (0,0)。
下雨了,Stuart 能够轻松地在田野上移动。每小时他可以选择一个相邻的植物坐标移动过去并吃掉它。具体来说,如果他当前在 (x,y),他可以移动到 (x+1,y)、(x,y+1)、(x−1,y) 或 (x,y−1)。他可以在雨停前继续移动,也可以选择停止并停留在某个植物上,包括留在原地。
然而,田野中有 n 个深水坑,每个水坑覆盖一个矩形区域,Stuart 无法安全地通过。水坑 i 的覆盖范围是满足 ai≤x≤bi 且 ci≤y≤di 的所有整数坐标点。注意,水坑可能存在重叠。
你需要回答 q 个查询,每个查询的类型由 t 指定:
- 如果 t=1,查询 Stuart 从原点移动到 (xj,yj) 所需的最短时间(以小时为单位)。如果无法到达目的地,输出 −1。
- 如果 t=2,假设雨将持续 mj 小时,计算 Stuart 在最多 mj 小时内可以到达的不同位置数量。
输入格式
- 第一行包含三个整数 n、t 和 q,分别表示水坑数量、查询类型和查询数量。
- 接下来的 n 行中,每行包含四个整数 ai、bi、ci 和 di,表示水坑 i 的范围。
- 如果 t=1,接下来的 q 行每行包含两个整数 xj 和 yj,表示查询的目标坐标。
- 如果 t=2,接下来的 q 行每行包含一个整数 mj,表示雨的持续时间。
输出格式
- 对于每个查询,输出一个整数作为答案:
- 如果 t=1,输出 Stuart 到达目标位置的最短时间;如果无法到达,输出 −1。
- 如果 t=2,输出 Stuart 在最多 mj 小时内可以到达的不同位置数量。
提示
【样例解释】
对于样例 #1:
- Stuart 可以在 3 小时内到达 (3,3)。
- Stuart 无法到达 (2,−3),因为目标位置被水坑覆盖。
对于样例 #2:
- Stuart 在 1 小时内可以到达 4 个不同的位置。
- 在 2 小时内,可以到达 8 个位置。
【数据范围】
- 1≤n≤400
- 1≤t≤2
- 1≤q≤200,000
- −109≤ai≤bi≤109
- −109≤ci≤di≤109
- 原点 (0,0) 不被任何水坑覆盖。
- 如果 t=1,则 −109≤xj,yj≤109。
- 如果 t=2,则 1≤mj≤109。
子任务编号 |
分值 |
t= |
n≤ |
q≤ |
ai,bi,ci,di,xi,yi |
0 |
/ |
1 |
5 |
1 |
100 |
200,000 |
−400≤ai,bi,ci,di,xi,yi≤400 |
2 |
17 |
ai≡ci≡0,bi≡di≡−1(mod107) |
3 |
8 |
/ |
4 |
2 |
400 |
−400≤ai,bi,ci,di,xi,yi≤400 |
5 |
21 |
ai≡ci≡0,bi≡di≡−1(mod107) |
6 |
10 |
/ |
7 |
13 |
8 |
14 |
200,000 |
9 |
4 |
400 |