P1018我流奥义smoke

时间限制 1000 ms内存限制 512 MiB通过率 —
显示算法标签最大公约数 · 排序 · 计算几何

【题目背景】

如果你看上去凶神恶煞,你最好真的是凶神恶煞。 ——阿卡丽

tfbz 即将离开 Gioush 大队营地,踏上游历四方的旅程。临行前,lava__44 在营地外安排了最后一次训练,检验他是否真正掌握了霞阵

【题目描述】

lava__44 将 tfbz 带到一片可以视为平面直角坐标系的草坪。草坪中共有 nn 个不计大小的灌木丛,第 ii 个位于 (xi,yi)(x_i,y_i);tfbz 站在原点,释放 w\texttt{w} 技能:我流奥义!霞阵

烟雾会从原点沿各个方向扩散,最远到达半径 rr。在某个方向上第一次碰到灌木丛时,烟雾会在这个灌木丛上留下标记,并且不再标记同一方向上更远的灌木丛。

具体地说,对于一个不在原点的灌木丛,如果它到原点的距离不超过 rr,并且它与原点之间的线段上不存在其他灌木丛,那么它会被标记。特殊地,若原点处存在灌木丛,则只有原点处的灌木丛会被标记。

lava__44 想知道,这次霞阵最终会标记多少个灌木丛。

【输入格式】

从文件 smoke.in\textbf{\textit{smoke.in}} 中读入数据。

第一行一个整数 TT,表示测试数据的组数。

对于每组测试数据:

  • 第一行两个整数 n,rn,r,表示灌木丛数量和烟雾的最大半径;
  • 接下来 nn 行,第 ii 行两个整数 xi,yix_i,y_i,表示第 ii 个灌木丛的坐标。

【输出格式】

输出到文件 smoke.out\textbf{\textit{smoke.out}} 中。

对于每组测试数据,输出一行一个整数,表示被标记的灌木丛数量。

【样例 1 输入】

15 20 10 20 31 1-1 -1

【样例 1 输出】

3

【说明/提示】

【样例 2】

见选手目录下的 smoke/smoke2.in\textbf{\textit{smoke/smoke2.in}}smoke/smoke2.ans\textbf{\textit{smoke/smoke2.ans}}

该组样例符合测试点 151\sim 5 的数据范围。

【样例 3】

见选手目录下的 smoke/smoke3.in\textbf{\textit{smoke/smoke3.in}}smoke/smoke3.ans\textbf{\textit{smoke/smoke3.ans}}

该组样例符合测试点 6106\sim 10 的数据范围。

【样例 4】

见选手目录下的 smoke/smoke4.in\textbf{\textit{smoke/smoke4.in}}smoke/smoke4.ans\textbf{\textit{smoke/smoke4.ans}}

该组样例符合测试点 111511\sim 15 的数据范围。

【样例 5】

见选手目录下的 smoke/smoke5.in\textbf{\textit{smoke/smoke5.in}}smoke/smoke5.ans\textbf{\textit{smoke/smoke5.ans}}

该组样例符合测试点 162016\sim 20 的数据范围。

【数据范围】

对于 100%100\% 的数据,保证:1T1041\leq T\leq 10^41n1061\leq n\leq 10^6,单个测试点内 n106\sum n\leq 10^60xi,yi1090\leq |x_i|,|y_i|\leq 10^91r1091\leq r\leq 10^9。同一组测试数据内,所有灌木丛的坐标两两不同。

测试点编号TTnnn\sum nmax(xi,yi)\max(|x_i|,|y_i|)特殊性质
151\sim 5104\leq 10^42000\leq 20002000\leq 2000109\leq 10^9
6106\sim 10104\leq 10^4106\leq 10^6106\leq 10^62000\leq 2000
111511\sim 15104\leq 10^4106\leq 10^6106\leq 10^6109\leq 10^9
162016\sim 20104\leq 10^4106\leq 10^6106\leq 10^6109\leq 10^9

特殊性质:所有灌木丛到原点的距离均不超过 rr

【题解】

已公开 1 篇题解,官方题解会优先显示。

查看题解