#P3462. Lucky Light

Lucky Light

中文题面:

描述

我们有一个位于坐标 (xL,yL)(xL, yL) 的点光源,其中 yL>0yL > 0,以及一组有限数量的线段,每条线段的长度均为有限且非零,并由其两个端点的坐标给出。

这些端点各不相同。所有线段均位于 xx 轴上方y>0(y > 0)

这些线段会在 xx 轴上投下阴影。我们假设两条线段的阴影要么完全不重叠,要么重叠部分的宽度不为零(即不会仅仅接触)。

同时,我们假设每条线段的阴影不会只是一个点,也就是说,没有线段会直接指向光源。光源的高度yL(yL)至少比线段端点的 yy 坐标大 11 个单位。这确保了每条线段在 xx 轴上都会有一个有限的阴影。

这些阴影将 xx 轴划分为暗区和亮区(区间)。问题在于确定亮区的数量——如果至少有一条线段,则亮区数量至少为 22(否则为 1v1v)。

在下图中,三条线段 AABBCC 形成了三个亮区,如图所示。

输入:

输入文件的第一行包含一个数字:表示测试用例的数量。每个测试用例的格式如下:

一行,一个整数 nn,表示线段的数量,其中 0n1000 ≤ n ≤ 100

一行,两个整数 xLxLyLyL,表示光源的坐标,用单个空格分隔。坐标满足 100xL100−100 ≤ xL ≤ 1001yL1,0001 ≤ yL ≤ 1,000

接下来的 nn 行,每行包含四个整数 xixiyiyiuiui vivi,用单个空格分隔,表示第 ii 条线段的两个端点 (xi,yi)(xi, yi)(ui,vi)(ui, vi) 的坐标,其中 100xi−100 ≤ xi, ui100ui ≤ 1000<yi0 < yi, vi<yL1invi < yL(1 ≤ i ≤ n)

输出:

对于每个测试用例,输出应包含一个数字,单独占一行:表示亮区的数量。

输入数据 1

2
3
50 60
55 45 30 35
64 39 92 18
20 30 40 16
2
-10 50
-10 1 10 11
-10 11 10 1

输出数据 1

3
2

来源

北京算法程序设计竞赛 2006 资格赛