luogu#P15955. [ICPC 2018 Jakarta R] Artilleries and Defensive Walls

[ICPC 2018 Jakarta R] Artilleries and Defensive Walls

题目描述

索维尔与其邻国诺兰之间爆发了一场毁灭性的战争,这场战争已持续数百年。两国的边界可以表示为一条水平的直线 y=0y = 0,其中 y<0y < 0 的区域属于索维尔,y>0y > 0 的区域属于诺兰。

诺兰在位置 (xi,yi)(x_i, y_i)yi>0y_i > 0)部署了 NN 门火炮。此外,诺兰还修建了 MM 道防御墙。每道防御墙可以表示为一个三元组 xj1,xj2,yj\langle x_{j1}, x_{j2}, y_j \rangle,即一条从 (xj1,yj)(x_{j1}, y_j)(xj2,yj)(x_{j2}, y_j) 的水平线段,其中 xj1<xj2x_{j1} < x_{j2}yj>0y_j > 0。索维尔已知,诺兰的火炮不会位于任何防御墙(包括其端点)上,且没有两门火炮位于同一位置。另外,也没有两道墙(包括其端点)有公共点。

索维尔决定建造一座瞭望塔,以观察诺兰火炮的任何可疑活动。由于建造一座瞭望塔的成本对于索维尔来说几乎是天文数字,他们只能负担得起一座。因此,他们提出了 QQ 个候选位置 (xk,yk)(x_k, y_k)yk<0y_k < 0)来建造瞭望塔。如果瞭望塔建在 (x,y)(x, y),则所有位于从 (x,y)(x, y) 出发的 视线 上的火炮都能被瞭望塔观察到(即可见)。一个位置 (xi,yi)(x_i, y_i) 位于从 (x,y)(x, y) 出发的视线上,当且仅当连接 (xi,yi)(x_i, y_i)(x,y)(x, y) 的直线不与任何防御墙(包括其端点)相交;换句话说,不存在点 (x,y)(x', y') 同时位于某道防御墙上和线段 (xi,yi)(x_i, y_i)(x,y)(x, y) 之间。注意,一门火炮不会影响其他火炮从瞭望塔观察的可见性。

本题的任务是,对于每个提出的瞭望塔候选位置,确定能够从该位置观察到的诺兰火炮的数量。

输入格式

输入的第一行包含三个整数:NNMMQQ1N400001 \leq N \leq 400000M50 \leq M \leq 51Q400001 \leq Q \leq 40000),分别表示火炮的数量、防御墙的数量以及瞭望塔候选位置的数量。接下来的 NN 行,每行包含两个整数:xix_iyiy_i106xi106-10^6 \leq x_i \leq 10^60<yi1060 < y_i \leq 10^6),表示第 ii 门火炮的位置,其中 i=1Ni = 1 \ldots N。接下来的 MM 行,每行包含三个整数:xj1x_{j1}xj2x_{j2}yjy_j106xj1<xj2106-10^6 \leq x_{j1} < x_{j2} \leq 10^60<yj1060 < y_j \leq 10^6),表示第 jj 道防御墙的位置,其中 j=1Mj = 1 \ldots M。接下来的 QQ 行,每行包含两个整数:xkx_kyky_k106xk106-10^6 \leq x_k \leq 10^6106yk<0-10^6 \leq y_k < 0),表示一个瞭望塔的候选位置。

输出格式

对于每个输入的瞭望塔候选位置,按输入顺序,输出一行一个整数,表示从该候选位置能观察到的诺兰火炮数量。

6 2 3
0 2
0 15
5 7
15 15
35 12
45 10
5 20 5
25 40 10
0 -5
5 -10
20 -15
4
3
2

提示

样例输入/输出的解释

所有火炮、防御墙和瞭望塔候选位置如下图所示。

:::align{center} :::

  • 第一个瞭望塔候选位置 (0,5)(0, -5) 可以观察到 44 门火炮,即位于 (0,2)(0, 2)(0,15)(0, 15)(5,7)(5, 7)(45,10)(45, 10) 的火炮。
  • 第二个瞭望塔候选位置 (5,10)(5, -10) 可以观察到 33 门火炮,即位于 (0,2)(0, 2)(0,15)(0, 15)(45,10)(45, 10) 的火炮。
  • 第三个瞭望塔候选位置 (20,15)(20, -15) 可以观察到 22 门火炮,即位于 (0,2)(0, 2)(45,10)(45, 10) 的火炮。

翻译由 DeepSeek V3.2 完成