#P13041. [GCJ 2021 #3] Fence Design
[GCJ 2021 #3] Fence Design
Description
你被临时雇佣为围栏建设公司的员工,负责完成一块场地的围栏设计工作。每条围栏必须沿着直线连接两根立柱。每根立柱占据一个固定点,且任意三根立柱不共线。围栏之间不能相互交叉,但可以在端点(立柱位置)处相连。
前员工在项目中已经铺设了两条围栏后就离职了。现在需要由你来完成剩余设计。为了让老板和客户满意,你希望在不考虑围栏长度的情况下,尽可能多地添加围栏。
给定所有立柱的位置和已建好的两条围栏,请找出可以添加的最大数量的围栏,使得所有围栏(包括已有的和新增的)两两之间不交叉(仅在端点处相连是允许的)。
Input Format
输入的第一行包含测试用例数量 。随后是 组测试用例:
- 每组测试用例的第一行是一个整数 ,表示立柱数量。
- 接下来 行,每行包含两个整数 和 ,表示第 根立柱的坐标。
- 最后两行分别描述已有的两条围栏,每行包含两个整数 和 ,表示第 条围栏连接第 根和第 根立柱(立柱编号从 1 开始)。
Output Format
对于每组测试用例:
- 首先输出一行
Case #x: y,其中 是测试用例编号(从 1 开始), 是能添加的围栏最大数量(不包括已有围栏)。 - 接着输出 行,每行包含两个不同的整数 和 (),表示新增的围栏连接第 根和第 根立柱。
- 所有围栏(包括已有的和新增的)必须满足两两不交叉(仅在端点处允许相连)。
2
4
0 0
0 1
1 1
1 0
1 2
3 4
5
0 0
0 1
1 1
1 0
2 3
1 2
3 5
Case #1: 3
1 4
2 3
4 2
Case #2: 6
5 4
2 4
5 2
1 4
4 3
3 2
Hint
样例解释
下图展示了样例中的立柱和围栏布局。蓝色加粗线条表示已有围栏,其余线条表示样例输出中添加的围栏方案:

数据范围
- 。
- 对所有 ,。
- 对所有 ,$(\mathbf{X}_i, \mathbf{Y}_i) \neq (\mathbf{X}_j, \mathbf{Y}_j)$。
- 对所有 ,。
- 已有围栏之间不交叉(仅在端点处允许相连)。
- 任意三根立柱不共线。
测试集 1(11 分,可见判定)
- 时间限制:60 秒。
- 。
测试集 2(19 分,隐藏判定)
- 时间限制:90 秒。
- 。
翻译由 DeepSeek V3 完成
京公网安备 11011102002149号