QOJ.ac

QOJ

时间限制: 10.0 s 内存限制: 512 MB 总分: 100

#12934. 范围伤害

统计

Liam (angryneeson52) 正在玩他最喜欢的塔防游戏!这个游戏涉及摧毁对手的爪牙,同时保卫他自己的村庄。

Liam 最喜欢的攻击方式是范围攻击(Area of Effect)。范围攻击是一个完美的圆。Liam 只需选择一个圆心和半径,圆内或圆上的每一个爪牙都会被摧毁!爪牙足够小,可以被视为点。

游戏并不只是摧毁所有爪牙那么简单。Liam 还必须避免用他的攻击击中自己的村庄。攻击可以触碰村庄的边缘,但绝不能进入村庄内部。村庄也是完美的圆。

他的攻击还有一个最大半径限制。攻击的半径可以减小,但不能超过这个最大值。

请确定 Liam 在单次攻击中在不损坏任何自身村庄的情况下,最多能摧毁多少个敌方爪牙。

输入格式

每个输入包含一个测试用例。注意,你的程序可能会在不同的输入上运行多次。每个输入以一行包含 3 个空格分隔的整数 $n, m, r$ 开头,其中:

  • $n$ ($1 \le n \le 10$) 是 Liam 的村庄数量
  • $m$ ($1 \le m \le 2\,000$) 是敌方爪牙的数量
  • $r$ ($1 \le r \le 20\,000$) 是 Liam 范围攻击的最大半径

接下来的 $n$ 行,每行包含 3 个空格分隔的整数 $vx, vy, vr$,分别代表 Liam 其中一个村庄的位置 ($ -20\,000 \le vx, vy \le 20\,000$) 和半径 ($1 \le vr \le 20\,000$)。任意两个村庄都不会相交或重叠。

接下来的 $m$ 行,每行包含 2 个空格分隔的整数 $mx, my$,代表其中一个敌方爪牙的位置 ($-20\,000 \le mx, my \le 20\,000$)。任意两个爪牙不会占据同一个点,且没有任何敌方爪牙会位于 Liam 的任何村庄内部。

输出格式

输出一个整数,表示 Liam 在单次攻击中最多能摧毁的敌方爪牙数量。

样例

样例输入 1

1 3 3
0 0 1
3 3
-3 3
3 -3

样例输出 1

1

样例输入 2

1 5 3
0 0 1
3 3
-3 3
3 -3
3 0
0 3

样例输出 2

3

样例输入 3

4 10 100
0 0 3
10 0 3
10 10 3
0 10 3
0 4
0 5
0 6
5 3
5 -3
5 5
6 7
3 6
10 4
8 4

样例输出 3

5

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.