#icpc2013summerday3k. [icpc2013summer_day3_k]くるくるくるりん
[icpc2013summer_day3_k]くるくるくるりん
将以下文本翻译成中文,要求显示为markdown格式,不要渲染:
ヘリリンは二次元平面上における長さ$2L$の線分の形状をしている。
ヘリリンのまわりには、線分の形状をしたいくつかの障害物が存在している。
ヘリリンは障害物に接すると体力が削られてしまう。
完璧主義のヘリリンは無傷でゴールすることにした。
ヘリリンは以下の行動ができる。
* 平行移動
* ヘリリンを表す線分の中点を中心として、反時計周りにちょうど $180 / r$ 度だけ回転する
ただし、二次元平面は上方向に$y$軸をとる。
ヘリリンのまわりに、2 点 S, G がある。
始めはヘリリンの中心は点 S にあって、$x$軸に平行な状態になっている。
ヘリリンは、平行移動するのは得意だが、回転するのは不得意である。
あなたの仕事は、ヘリリンが中心を点 S から点 G まで移動させるまでに必要な、最小の回転行動の回数を求めることである。
移動させることができない場合は、そのことも検出せよ。
ただし、以下のことに注意せよ。
* ヘリリンは移動しながら回転することはできない。
* ヘリリンが回転する途中で障害物にぶつかりうる場合は、回転することはできない。
* 障害物が互いに交差していることはあり得る。
* 線分は十分小さい有限の太さを持つものとして扱う。最後のサンプルを見よ。
## 输入
输入是以下格式的:
> $L$ $r$
> $sx$ $sy$
> $gx$ $gy$
> $n$
> $x11$ $y11$ $x12$ $y12$
> ...
> $xn1$ $yn1$ $xn2$ $yn2$
其中,$L$是ヘリリン半长;$r$是旋转角度;$(sx, sy)$是点S的坐标;$(gx, gy)$是点G的坐标;$n$是障碍物的数量;$(xi1, yi1)$和$(xi2, yi2)$是第$i$个障碍物线段的端点。
### 约束条件
输入满足以下约束条件:
* $1 \leq n \leq 30$
* $2 \leq r \leq 11$
* $1 \leq L \leq 105$
* 输入中的坐标分量的绝对值都不超过$105$
* 输入中的数值都是整数
* 对于$i = 1, ..., n$,$(xi1, yi1) \neq (xi2, yi2)$
* 当ヘリリン以水平于x轴的状态放置在起始位置时,与障碍物的距离(线段与线段之间的距离)大于$10^{-3}$
* 对于表示障碍物线段的$li$,$1 \leq i \leq j \leq n$,使得$li$和$lj$之间的距离不超过$2L$的组合$(i, j)$最多有100个
* 终点不会位于障碍物上
## 输出
输出为从起始位置到终点位置移动所需的最小旋转动作次数。如果无法移动,则输出-1。
## 示例输入1
```plain
1 2
3 3
2 -1
4
1 0 1 5
0 1 4 1
0 4 6 4
5 0 5 5
示例输出1
1
- 通过将ヘリリン旋转90度,可以通过隙缝。
示例输入2
1 2
3 3
2 -1
4
1 0 1 5
0 1 6 1
0 4 6 4
5 0 5 5
示例输出2
-1
- ヘリリン被完全包围,无法到达终点。
示例输入3
1 4
3 3
7 0
5
1 0 1 5
0 1 6 1
0 4 6 4
8 0 2 5
6 0 4 2
示例输出3
3
- 必须进行3次逆时针旋转才能通过斜线路径到达终点。
示例输入4
2 2
4 2
4 5
5
1 5 2 0
0 4 3 4
0 1 8 1
7 0 7 5
8 4 5 4
示例输出4
-1
- 由于ヘリリン不能与障碍物完全接触,所以无法在缝隙处旋转并移动到终点。