QOJ.ac

QOJ

Time Limit: 5 s Memory Limit: 512 MB Total points: 100

#4538. 保龄球

Statistics

Little Rabbit 最近对一种特殊的保龄球产生了兴趣。保龄球可以看作二维平面上的一个凸多边形,而球瓶(保龄球的目标)可以看作平面上的点。

与普通保龄球一样,目标是让保龄球击中尽可能多的球瓶。我们可以假设保龄球在平面上做平移运动。一旦球瓶接触到保龄球(包括边界),该球瓶就会被击倒,且不会影响保龄球的运动方向。

现在给定保龄球和球瓶的位置,对于保龄球运动的不同方向,请计算它能击倒多少个球瓶。

输入格式

第一行包含一个整数 $T$ ($1 \le T \le 100$),表示测试用例的数量。 对于每个测试用例,第一行包含一个整数 $n$ ($3 \le n \le 10^5$),表示凸多边形的顶点数。 接下来的 $n$ 行,每行包含两个整数 $x, y$ ($|x|, |y| \le 10^9$),表示凸多边形的一个顶点坐标 $(x, y)$。顶点按逆时针顺序给出,且没有三点共线。 下一行包含一个整数 $m$ ($1 \le m \le 10^5$),表示球瓶的数量。 接下来的 $m$ 行,每行包含两个整数 $x, y$ ($|x|, |y| \le 10^9$),表示一个球瓶的坐标 $(x, y)$。保证球瓶严格位于多边形外部。 下一行包含一个整数 $q$ ($1 \le q \le 10^5$),表示查询的数量。 接下来的 $q$ 行,每行包含两个整数 $x, y$ ($|x|, |y| \le 10^9$),表示保龄球运动的方向向量 $(x, y)$。保证 $(x, y) \neq (0, 0)$。

保证所有测试用例的 $n, m, q$ 之和不超过 $2 \times 10^5$。

输出格式

对于每个查询,输出一行,包含一个整数,表示保龄球能击倒的球瓶数量。

样例

输入 1

1
4
0 0
2 0
2 2
0 2
5
1 4
3 1
4 2
5 1
3 3
3
0 1
1 0
1 1

输出 1

1
3
3

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.