#P1361. JaWs
JaWs
题目描述
“唉!那些血腥的好日子去哪儿了?”鲍勃,这条老鲨鱼,曾经深海中的杀手,如今流下的眼泪也融入了无尽的海水。多年的捕杀让鲍勃的牙齿失去了原有的形状,可怜的老鲨鱼现在连闭嘴都困难。他想给自己的PDA编程,帮助他找到闭嘴时牙齿的形状,而我们要帮他写这个程序!
我们称鲍勃的下排牙齿序列名为LT,上排牙齿序列为UT。为了简化问题,将LT视为一串相邻的等边三角形(即边长相等)。所有三角形的底边位于同一条水平直线上。UT的结构类似,只是三角形是倒置的(见图1)。
假设LT中最左边的牙齿底边的左端点坐标为(0,0),所以LT中所有三角形的底边都位于x轴上。我们称UT中最左边的牙齿底边的左端点为参考点。初始时,参考点的坐标满足以下条件:
- LT和UT中没有两个牙齿的尖端具有相同的x坐标,
- UT位于LT上方,即参考点的y坐标大于零,
- LT和UT在任何点都不重叠。
给定符合上述条件的UT和LT的位置,UT开始下落,下落过程中三角形的底边保持水平,即UT不旋转。UT持续下落,直到接触到LT上的某个点。此时,UT会向左或向右滑动,直到无法再滑动。在此过程中,LT固定不动,UT从不旋转。注意,UT的初始位置可能使其从左侧或右侧滑落,并最终落到LT下方(想象一下老鲨鱼的这种情况!)。此外,某些上排牙齿的尖端最终可能会穿过y=0的线(吸血鬼风格!)。你的程序需要判断UT是从左侧还是右侧滑落,或者否则,找到UT停止移动后参考点的最终位置。
输入
输入文件的第一行包含一个整数t(1 ≤ t ≤ 10),表示测试用例的数量,随后是每个测试用例的输入数据。每个测试用例的第一行包含一个整数L(1 ≤ L ≤ 10),表示LT中的三角形数量,接下来的L行每行描述LT中的一个三角形,包含一个整数b(1 ≤ b ≤ 100),表示三角形的边长。输入的下一行包含三个数字x、y和U。前两个数字是参考点的初始(x,y)坐标,可以是任意实数。U是UT中的三角形数量(1 ≤ U ≤ 10)。在这行之后,有U行,每行描述UT中的一个三角形,包含一个整数b(1 ≤ b ≤ 100),表示三角形的边长。
为了避免浮点算术错误,你可以假设输入具有这样的特性:在UT运动过程中,LT和UT中任意两个三角形的尖端之间的距离不会小于0.1。
输出
每个测试用例应输出一行,包含一对实数,四舍五入到小数点后三位,分别是UT停止移动后参考点的x和y坐标。如果UT从LT的左侧滑落,输出行应包含单词WM,如果从右侧滑落,则应为MW。输出区分大小写。
输入数据 1
2
2
10
10
2 20 2
10
10
1
10
50 50 1
10
输出数据 1
5.000 8.660
MW
来源 Tehran 2002