这道题是今天同事分享给我们做的,题目挺难的,也挺有意思的,一堆清北的人围在一起讨论了半个多小时,最后还是一个搞过ACM的人想出来了解法。特此把这道题和解法都分享一下。
题目描述
有n个伞兵从飞机上跳伞,伞兵落地后会昏迷一段时间,等到醒来后能看一眼雷达,雷达上能显示包括自己在内所有人的位置,但是雷达上显示的只是相对位置,没有东南西北这种方向,伞兵看完这一次雷达后就再也不能看了。
要求:设计一个策略能让伞兵落地后经过一系列运动最终所有人都走到一起去
补充说明:
- 可以认为所有伞兵都同时落地,但是每个伞兵昏迷的时间长度不同
- 可以认为伞兵的记忆力都非常好,看完雷达之后能够一直记住,而且伞兵走路能够精确的走多少步还有方位。
- 不能给伞兵编号,因为每个伞兵都是相同的。(因为如果能编号,则可以直接1号伞兵去寻找其他所有人,剩余的伞兵不动就好)
- 伞兵会面之后可以有交流的
- 最后这个策略是所有伞兵在跳伞前都知道的。
思路历程
因为每个伞兵都是相同的个体,不能编号,所以一个非常直观的思路就是,需要伞兵醒来之后,看到的雷达上的图形,去在图中寻找一个其他伞兵也能找的点。
所以一开始想法是找所有伞兵的中点,但是考虑到每个伞兵醒来的时间不一致,这就导致了先前醒来的伞兵在行动之后,中点会发生变化。所以士兵要去的这个点还必须随着士兵的移动不发生改变。