解题报告SPOJZebraCrossingCustom.docVIP

  • 11
  • 0
  • 约 5页
  • 2017-03-30 发布于江苏
  • 举报
解题报告SPOJZebraCrossingCustom

解题报告 SPOJ Zebra Crossing Custom 【题目描述】 一条宽度为W的马路,N个人站在马路的某一边,0时刻每个人都以自己的速率和方向开始过马路(运动的过程中,速率和方向不变)。你可以任意选一个位置作为起始点,一个速率(速率有最大值限制)和方向,从0时刻混在那N个人中过马路(过马路的过程中的速率和方向不变),要求途中碰到的人尽可能的多(碰到的意思是,在某一时刻两个人的X,Y坐标相等,碰撞不会对方向速率造成任何影响)。 给定N个人的初始位置和他们过马路的速率方向,求出最多能碰到多少人。 【分析】 首先,把所有人的速度按X,Y方向分解,容易知道,碰到的人的Y方向速率肯定相等。所以,只要考虑Y方向速率相同的一群人。 好的,现在所有人的Y方向速率相同了。只要考虑X方向了。 把每个人的运动轨迹画出来,自己的运动轨迹也画出来,那么在Y速率相同的前提下,两人相撞等价于运动轨迹相撞。 假设,现在从SX出发,X方向速率是VX,Y方向速率是VY(VY等于这些人的),终点是TX=SX+VX*W/VY,能够碰到最多的人。 那么,可以把SX左移,直到SX碰到某个人的起始点,或者TX碰到某个人的终点。由于碰到终点的情况可以把马路翻过来考虑,所以只考虑碰到起始点的情况。 现在SX卡在了某个人的起始点上了,那么可以把X方向速率伸缩,直到TX碰到某个人的终止点,或者到达

文档评论(0)

1亿VIP精品文档

相关文档