CF2138F.Ode to the Bridge Builder

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给你一个二维平面。初始时,两个点 P1P_1 和 P2P_2 分别位于 (0,0)(0,0) 和 (1,0)(1,0),并且两点间有一条线段连接。你可以通过如下操作绘制三角形:

  • 选择两个由线段直接连接的点 AA 和 BB(即 AA 和 BB 必须是已存在线段的两端点)。
  • 选择两个实数 xx 和 yy,满足 −2⋅104≤x,y≤2⋅104-2\cdot 10^4 \le x, y \le 2\cdot 10^4。在坐标 (x,y)(x,y) 处绘制一个新点 CC。然后,绘制线段 ACAC 和 BCBC,从而构成三角形 △ABC\triangle ABC。
  • 新三角形 △ABC\triangle ABC 的每条边的长度 ll 都必须满足 0.5≤l≤10.5\le l\le 1。

注意,每次操作只绘制一个新点和两条新线段。

你的任务是,使用至多 m=⌈2p2+q2⌉m = \left\lceil 2\sqrt{p^2 + q^2}\right\rceil 次操作,在坐标 (p,q)(p, q) 处绘制一个点,其中 ⌈x⌉\lceil x\rceil 表示大于等于 xx 的最小整数。保证 pp 和 qq 都是正整数。

由于可能存在精度误差:

  • 构造出的顶点只需距离 (p,q)(p,q) 不超过 10−410^{-4}。
  • 对于三角形的边长,允许绝对误差 10−810^{-8}(即 0.5−10−8≤l≤1+10−80.5 - 10^{-8} \le l \le 1 + 10^{-8})。

注意,目标点可以在最后一次操作之前就已经被创建(见第二个测试用例)。

输入格式

每个测试包含多组测试用例。第一行包含测试用例数 tt(1≤t≤10001 \le t \le 1000)。接下来是各个测试用例的描述。

每个测试用例第一行包含三个整数 p,qp, q 和 mm(1≤p,q≤1041 \le p, q \le 10^4,m=⌈2p2+q2⌉m = \left\lceil 2\sqrt{p^2 + q^2}\right\rceil)——即目标点的 xx 和 yy 坐标,以及最多允许执行的操作数。

保证所有测试用例中 mm 的总和不超过 10510^5。

输出格式

对于每个测试用例,输出一个整数 nn(0≤n≤m0\le n \le m),表示实际使用的操作数。

随后输出 nn 行,每行描述一次操作。第 ii 次操作输出四个值:两个整数 u,vu, v(1≤u,v≤i+11 \le u,v\le i+1, u≠vu\neq v),表示选中的两点的编号;随后两个实数 xx 和 yy(−2⋅104≤x,y≤2⋅104-2\cdot 10^4\le x, y \le 2\cdot 10^4),表示新点的坐标。

编号分配规则如下:

  • 点 P1(0,0)P_1(0,0) 和 P2(1,0)P_2(1,0) 的编号分别为 11 和 22。
  • 第 jj 次操作绘制的新点编号为 j+2j+2。

如果存在多种在 mm 次操作内到达目标点的有效方案,你可以输出任意一种。

输入输出样例

  • 输入#1

    2
    1 1 3
    3 1 7

    输出#1

    2
    1 2 0.5 0.8660254037844386
    2 3 1 1
    7
    1 2 0.5 0.5
    2 3 1.1339745962156 0.5
    4 2 1.8660254037844 0.5
    4 5 2 1
    5 6 2.5 0.5
    6 7 3 1
    6 7 2.5 1

说明/提示

在第一个样例中,最多可进行 ⌈22⌉=3\lceil 2\sqrt{2}\rceil=3 次操作,下面的方案只用了两步:

  1. 选择点 A=P1A = P_1 和 B=P2B = P_2,在 (12,32)\left(\frac{1}{2},\frac{\sqrt{3}}{2}\right) 处绘制新点 P3P_3。此时三角形 △P1P2P3\triangle P_1P_2P_3 的三边均为 11。
  2. 选择 A=P2A = P_2,B=P3B = P_3,在 (1,1)(1, 1) 处绘制新点 P4P_4,此时 △P2P3P4\triangle P_2P_3P_4 中 ∣P2P3∣=∣P2P4∣=1|P_2P_3|=|P_2P_4|=1,∣P3P4∣=2sin⁡(15∘)≈0.5176≥0.5|P_3P_4|=2\sin(15^\circ)\approx0.5176\ge 0.5。

在第二个样例中,最多可进行 ⌈210⌉=7\left\lceil 2\sqrt{10}\right\rceil=7 次操作。

如下图方案中,点 P4P_4 和 P5P_5 的坐标分别为 (2−32,12)\left(2-\frac{\sqrt{3}}{2},\frac{1}{2}\right) 和 (1+32,12)\left(1+\frac{\sqrt{3}}{2},\frac{1}{2}\right),且 ∣P4P6∣=∣P2P5∣=1|P_4P_6|=|P_2P_5|=1。可以验证所有线段的长度均在 [0.5,1][0.5,1] 范围内。

注意,最后一次操作其实可以省略,删除最后一步方案依然正确。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页