QOJ.ac

QOJ

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

#15539. 镜子派报告

Statistics

在物理课上,每个学生都必须完成一份学期作业。你选择研究一个实验,该实验旨在探究一种被称为“红球”(red balls)的稀有不稳定粒子的性质。红球粒子会沿直线传播,直到被镜子反射。

我们的实验可以看作是几个“单次反射镜”,它们可以被视为二维平面上的(可能无限长的)直线。单次反射镜的特性是:无论粒子从哪个方向射来,它仅在粒子第一次撞击该镜子时对其进行反射。在此之后,该镜子将总是允许该粒子直接穿过。

反射时,粒子接近反射点的直线与反射镜法线的夹角,等于粒子离开反射点的直线与法线的夹角(即入射角等于反射角)。如果粒子到达了两个镜子的交点,且这两个镜子在此时都本应反射该粒子,则粒子会解体。

镜子的布局由你的老师设计,你的任务是找到所有发射方向,使得从给定的起点发射的粒子能够到达指定的终点。

输入格式

第一行包含一个非负整数 $N$ ($0 \le N \le 8$),表示镜子的数量。

第二行包含四个整数 $S_x, S_y, E_x, E_y$,表示起点和终点的坐标。

接下来的 $N$ 行,每行包含四个整数 $A_x, A_y, B_x, B_y$,描述定义第 $i$ 面镜子所在直线的两个点。

所有输入坐标均在 $-100$ 到 $100$ 之间(含边界)。起点和终点是不同的。起点和终点到任何镜子的距离均不为零。

保证输入数据中,任何合法的解都不需要粒子在距离“当前反射镜与其他仍能反射该粒子的镜子的交点”小于 $10^{-4}$ 的位置发生反射。

输出格式

输出一行,包含一个整数,表示从起点出发能使粒子到达终点的不同发射方向的数量。

样例

输入样例 1

2
2 3 4 2
2 2 3 3
1 4 3 4

输出样例 1

1

输入样例 2

3
2 3 5 2
1 3 1 1
2 4 4 2
5 4 6 5

输出样例 2

1

输入样例 3

1
0 0 4 0
0 4 4 4

输出样例 3

2

说明

图 1:样例 1、2 和 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.