CF1662O Circular Maze
题目描述
你得到了一组圆形迷宫,正如图中所示。

你的任务是判断这些迷宫是否可以解决,也就是说,是否存在一条不碰到任何墙壁的路径,可以从迷宫中心一直走到外部。迷宫中的墙壁有 $n$ 个,它们可以是圆形墙壁或者直线形墙壁。
- 圆形墙壁用半径 $r$(即距离中心的距离)和两个角度 $\theta_1, \theta_2$ 来描述,这两个角度表示墙壁在顺时针方向上的起始角度和终止角度。需要注意的是,互换这两个角度会改变墙壁的位置。
- 直线墙壁用一个角度 $\theta$(表示墙壁的方向)和两个半径 $r_1$ 与 $r_2$ 描述,它们表示墙壁的起始半径和终止半径。
角度用度数表示,$0$ 度对应于正上方,角度按照顺时针方向增加(因此,正东方向对应90度)。
输入格式
每段输入可以包含多个测试用例。第一行包含一个整数 $t$($1 \le t \le 20$),表示测试用例的数量。接下来,是每个测试用例的具体描述。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 5000$),表示该迷宫中的墙壁总数量。
然后的 $n$ 行中,每行描述一个墙壁。描述起始于一个字符:C 代表圆形墙壁,S 代表直线墙壁。后接三个整数:
- 对于圆形墙壁,这三个整数为 $r, \theta_1, \theta_2$($1 \le r \le 20$,$0 \le \theta_1,\theta_2 < 360$,且 $\theta_1 \neq \theta_2$)。
- 对于直线墙壁,这三个整数为 $r_1, r_2, \theta$($1 \le r_1 < r_2 \le 20$,$0 \le \theta < 360$)。
保证所有圆形墙壁不会重叠(但可能在一个或两个点相交),所有直线墙壁也不会重叠(但可能在一个点相交)。然而,圆形墙壁和直线墙壁之间可以随意相交。
输出格式
对于每一个测试用例,如果迷宫可以被成功解决,输出 `YES`,否则输出 `NO`。
**本翻译由 AI 自动生成**
说明/提示
The two sample test cases correspond to the two mazes in the picture.