CF2138F Ode to the Bridge Builder

题目描述

给你一个二维平面。初始时,两个点 $P_1$ 和 $P_2$ 分别位于 $(0,0)$ 和 $(1,0)$,并且两点间有一条线段连接。你可以通过如下操作绘制三角形: - 选择两个由线段直接连接的点 $A$ 和 $B$(即 $A$ 和 $B$ 必须是已存在线段的两端点)。 - 选择两个实数 $x$ 和 $y$,满足 $-2\cdot 10^4 \le x, y \le 2\cdot 10^4$。在坐标 $(x,y)$ 处绘制一个新点 $C$。然后,绘制线段 $AC$ 和 $BC$,从而构成三角形 $\triangle ABC$。 - 新三角形 $\triangle ABC$ 的每条边的长度 $l$ 都必须满足 $0.5\le l\le 1$。 注意,每次操作只绘制一个新点和两条新线段。 你的任务是,使用至多 $m = \left\lceil 2\sqrt{p^2 + q^2}\right\rceil$ 次操作,在坐标 $(p, q)$ 处绘制一个点,其中 $\lceil x\rceil$ 表示大于等于 $x$ 的最小整数。保证 $p$ 和 $q$ 都是正整数。 由于可能存在精度误差: - 构造出的顶点只需距离 $(p,q)$ 不超过 $10^{-4}$。 - 对于三角形的边长,允许绝对误差 $10^{-8}$(即 $0.5 - 10^{-8} \le l \le 1 + 10^{-8}$)。 注意,目标点可以在最后一次操作之前就已经被创建(见第二个测试用例)。

输入格式

每个测试包含多组测试用例。第一行包含测试用例数 $t$($1 \le t \le 1000$)。接下来是各个测试用例的描述。 每个测试用例第一行包含三个整数 $p, q$ 和 $m$($1 \le p, q \le 10^4$,$m = \left\lceil 2\sqrt{p^2 + q^2}\right\rceil$)——即目标点的 $x$ 和 $y$ 坐标,以及最多允许执行的操作数。 保证所有测试用例中 $m$ 的总和不超过 $10^5$。

输出格式

对于每个测试用例,输出一个整数 $n$($0\le n \le m$),表示实际使用的操作数。 随后输出 $n$ 行,每行描述一次操作。第 $i$ 次操作输出四个值:两个整数 $u, v$($1 \le u,v\le i+1$, $u\neq v$),表示选中的两点的编号;随后两个实数 $x$ 和 $y$($-2\cdot 10^4\le x, y \le 2\cdot 10^4$),表示新点的坐标。 编号分配规则如下: - 点 $P_1(0,0)$ 和 $P_2(1,0)$ 的编号分别为 $1$ 和 $2$。 - 第 $j$ 次操作绘制的新点编号为 $j+2$。 如果存在多种在 $m$ 次操作内到达目标点的有效方案,你可以输出任意一种。

说明/提示

在第一个样例中,最多可进行 $\lceil 2\sqrt{2}\rceil=3$ 次操作,下面的方案只用了两步: 1. 选择点 $A = P_1$ 和 $B = P_2$,在 $\left(\frac{1}{2},\frac{\sqrt{3}}{2}\right)$ 处绘制新点 $P_3$。此时三角形 $\triangle P_1P_2P_3$ 的三边均为 $1$。 2. 选择 $A = P_2$,$B = P_3$,在 $(1, 1)$ 处绘制新点 $P_4$,此时 $\triangle P_2P_3P_4$ 中 $|P_2P_3|=|P_2P_4|=1$,$|P_3P_4|=2\sin(15^\circ)\approx0.5176\ge 0.5$。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF2138F/cfc68575b99f51138309e60c3f43a305fec1d5182cef70218a5f1f1a05be903d.png) 在第二个样例中,最多可进行 $\left\lceil 2\sqrt{10}\right\rceil=7$ 次操作。 如下图方案中,点 $P_4$ 和 $P_5$ 的坐标分别为 $\left(2-\frac{\sqrt{3}}{2},\frac{1}{2}\right)$ 和 $\left(1+\frac{\sqrt{3}}{2},\frac{1}{2}\right)$,且 $|P_4P_6|=|P_2P_5|=1$。可以验证所有线段的长度均在 $[0.5,1]$ 范围内。 注意,最后一次操作其实可以省略,删除最后一步方案依然正确。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF2138F/da4fd728ff304ee515895705a95095d75350a00896cfaf4d7e107283fe175d90.png) 由 ChatGPT 5 翻译