#THU20254B. 幻彩气球射击

    ID: 327 Type: Default 1000ms 512MiB Tried: 78 Accepted: 11 Difficulty: 3 Uploaded By: Tags>清华推研机试校外推免模拟STL其他二分查找

幻彩气球射击

时间限制: 1.0 秒

空间限制: 512 MB

题目背景

在曙梦乐园的游艺区,最受欢迎的项目莫过于“幻彩气球射击”了。为了冲击该项目的最高得分记录,小梦决定先在全息模拟器中进行多次战术推演,规划最佳的射击位置与武器搭配。

题目描述

在一个二维平面中,悬浮着 nn 个幻彩气球。你将帮助小梦模拟在不同位置使用不同功率的八向激光枪击破这些气球的过程。

形式化地说,我们将这个场景用二维平面直角坐标系表示,nn 个气球的坐标分别为 (xi,yi)(x_i,y_i)。小梦总计会进行 qq 次场景模拟,每次模拟她会站在 (ai,bi)(a_i,b_i) 的位置,使用损耗距离为 kik_i 的激光枪进行发射。

每次发射激光,激光束会在 (ai,bi)(a_i,b_i) 处分别沿 $(1,0),(1,1),(0,1),(-1,1),(-1,0),(-1,-1),(0,-1),(1,-1)$ 这 8 个向量方向同时射出。激光具有穿透性,击破一个气球后会持续沿该方向前进,直到当激光所在的横坐标或者纵坐标与发射位置的差大于 kik_i(即损耗距离)时,激光才会消散。

对于每次场景模拟,你需要求出小梦能够击破多少个气球。需要注意的是,各次模拟场景互相独立,都是在初始的 nn 个气球均存在的前提下进行计算的。

输入格式

从标准输入读入数据。

第一行为两个正整数 n,qn,q,表示气球个数以及场景模拟次数。

接下来 nn 行,每行两个整数 xi,yix_i,y_i,表示各个气球的坐标。

接下来 qq 行,每行三个整数 ai,bi,kia_i,b_i,k_i,表示每次模拟时小梦所处位置以及激光枪的损耗距离。

输出格式

输出到标准输出。

输出 qq 行,每行一个非负整数,表示每次模拟能够击破的气球数量。

6 3
2 0
2 2
0 2
-2 -2
3 3
0 5
0 0 2
0 1 4
1 1 3
4
2
5

样例 1 解释

本样例中,平面上共有 66 个气球,并进行了 33 次互相独立的场景模拟。

11 次场景模拟:小梦位于 (0,0)(0,0),激光损耗距离 k=2k=2

  • 气球 (2,0)(2,0) 位于发射点 (1,0)(1,0) 方向,横纵坐标最大差值为 222 \le 2被击破
  • 气球 (2,2)(2,2) 位于发射点 (1,1)(1,1) 方向,横纵坐标最大差值为 222 \le 2被击破
  • 气球 (0,2)(0,2) 位于发射点 (0,1)(0,1) 方向,横纵坐标最大差值为 222 \le 2被击破
  • 气球 (2,2)(-2,-2) 位于发射点 (1,1)(-1,-1) 方向,横纵坐标最大差值为 222 \le 2被击破
  • 气球 (3,3)(3,3) 虽然在发射点 (1,1)(1,1) 方向上,但与发射点坐标差值为 3>23 > 2,超出损耗范围,未被击破。
  • 气球 (0,5)(0,5) 虽然在发射点 (0,1)(0,1) 方向上,但与发射点坐标差值为 5>25 > 2,超出损耗范围,未被击破。

因此,本次模拟共击破 44 个气球。

22 次场景模拟:小梦位于 (0,1)(0,1),激光损耗距离 k=4k=4

  • (0,1)(0,1) 发射的 8 个方向中,仅有 (0,2)(0,2)(0,5)(0,5) 位于正上方(即 (0,1)(0,1) 向量方向),且与角色的坐标差值分别为 1144(均 4\le 4),这两个气球被击破
  • 剩余的 4 个气球相对 (0,1)(0,1) 的位置偏差均不在规定的 8 个射线方向上,无法被光线扫到。

因此,本次模拟共击破 22 个气球。

33 次场景模拟:小梦位于 (1,1)(1,1),激光损耗距离 k=3k=3

  • 气球 (2,0)(2,0)(1,1)(1,-1) 向量方向,坐标差值为 131 \le 3被击破
  • 气球 (2,2)(2,2)(1,1)(1,1) 向量方向,坐标差值为 131 \le 3被击破
  • 气球 (0,2)(0,2)(1,1)(-1,1) 向量方向,坐标差值为 131 \le 3被击破
  • 气球 (2,2)(-2,-2)(1,1)(-1,-1) 向量方向,坐标差值为 333 \le 3(刚好达到边界),被击破
  • 气球 (3,3)(3,3)(1,1)(1,1) 向量方向,坐标差值为 232 \le 3被击破
  • 气球 (0,5)(0,5) 的相对向量位置为 (1,4)(-1,4),不在 8 个发射方向上,未被击破。

因此,本次模拟共击破 55 个气球。

子任务

对于所有数据,对于所有数据,保证 $n,q\le 10^5,~-10^9\le x_i,y_i,a_i,b_i\le 10^9,~1\le k_i\le 10^9$,所有的气球位置和发射位置两两均不重合。

本题采用捆绑测试,你只有通过一个子任务中的所有测试点才能得到该子任务的分数。

子任务编号 分值 n,qn,q\le 坐标绝对值和损耗距离的上限
1 30 1010 10910^9
2 20 10001000 10001000
3 30 10510^5
4 20 10910^9