CF1662O Circular Maze

题目描述

你得到了一组圆形迷宫,正如图中所示。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1662O/b6cea444cf9c0138014a0dfcc590ddfaf1568305.png) 你的任务是判断这些迷宫是否可以解决,也就是说,是否存在一条不碰到任何墙壁的路径,可以从迷宫中心一直走到外部。迷宫中的墙壁有 $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.