#P2695. Rick the Persistent Gnu

Rick the Persistent Gnu

题目描述

一头非洲牛羚(gnugnu)是一种外形类似牛的羚羊。里克(RickRick)是一头坚韧的牛羚,作为牛群的首领,在旱季期间带领牛群前往一个名为"公平视野"(FairSightFair Sight,简称FSFS)的更丰美牧场。在前往FSFS的途中,里克需要在多个小型中间觅食站点停留,以便让牛群恢复体力。

迁移调查团队(MITMIT)的研究人员发现,牛羚在两个站点之间的移动距离不能超过DD个单位。他们还观察到,里克非常执着且严谨地遵循正确的方向。它始终沿直线行进,只在觅食站点停留并可能改变方向。它绝不会带领牛群朝远离FSFS的方向移动——最极端的情况也只会选择与FSFS方向垂直的路径。实际上,它总是从所有可能的站点中选择方向最接近FSFS的站点。然而,为了减少牛群的困惑,里克会排除那些需要转向角度超过9090度的站点(即使这些站点的方向比其他可行站点更接近FSFS方向)。
给定可能的觅食站点地图FSFS的方向以及牛羚群的起点,你需要帮助迁移调查团队预测牛群的移动路径(直到地图允许的最远位置)。

考虑以下示例:假设里克从站点33出发,D=170.0D=170.0。大箭头指向FSFS的方向。从站点33出发,只有站点2255在距离DD范围内。里克选择站点22,因为从站点33到站点22的方向比到站点55更接近FSFS方向。从站点22出发,它不会前往站点55,因为该方向指向远离FSFS的方向。接着它前往站点44(唯一可行的下一站)。此时站点11进入可达范围且方向与FSFS有一定一致性,但由于需要超过9090度的急转弯(逆时针方向),因此被排除。前往站点77不会导致急转弯,但方向远离FSFS,且站点77超出距离限制。因此路径在此终止。


输入格式

每个测试用例的第一行包含55个数值:

FSFS的方向向量(Fx,Fy)(Fx, Fy) ,站点总数NN1N1001 \leq N \leq 100),起始站点编号SS1SN1 \leq S \leq N),相邻站点间的最大距离DD(实数),接下来的NN行每行包含两个实数(x,y)(x, y),表示站点的坐标。

输入以一行5500结束。所有实数(包括FSFS的分量和DD)保留11位小数,且范围在999999x,y999999-999999 \leq x, y \leq 999999内。输入数据已针对退化情况(如转向角度是否严格小于9090度)进行校验,确保计算结果的确定性(使用单精度浮点运算即可)。


输出格式

每个测试用例的输出占一行,按顺序列出迁移路径中访问的站点编号(用空格分隔)。输出至少包含起始站点。


输入数据 11

-100.0 0.0 7 3 170.0  
140.0 120.0  
360.0 120.0  
480.0 180.0  
240.0 240.0  
420.0 240.0  
80.0 300.0  
260.0 300.0  
0 0 0 0 0  

输出数据 11

3 2 4  

来源

台湾 2004