1 条题解

  • 1
    @ 2023-6-28 10:07:54

    蓝书上讲的「运动规划」。

    容易发现只有起点、终点、切点可能走,其中切点可能是起点或终点到圆的切点,也可能是两圆之间公切线的切点。

    我们把这些点拎出来,然后把圆上路径连一连,圆间路径判一判连一连,最后跑个最短路就好了。

    两个圆可能有 44 条公切线,随便推一下柿子就好了。

    点数是 O(n2)O(n^2) 的,边数也是 O(n2)O(n^2) 的。

    注意起点直接通向终点的情况。

    判断一条线段是否和圆有交是容易的;由于判断时端点均在圆上 / 外,直接找出垂足看是否在线段上且在圆内即可。

    注意 acos(x)x 略大于 11 或略小于 1-1(可能来自浮点误差)时会返回 nan

    参考代码

    • 1

    信息

    ID
    4739
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    0
    上传者