Bubble Cup 8 finals D. Tablecity (575D)

题意:

(无输入,纯输出题)

一个城市用1000列2行的格子表示,一个小偷藏在城市的某一处。

在每一小时的开始,

(X, Y)位置的小偷可以移动到

(X - 1, Y), (X + 1, Y),(X - 1, Y - 1), (X - 1, Y + 1), (X + 1, Y - 1), (X + 1, Y + 1)中的任意一个位置。

在每一小时中,警察可以控制搜索两个格子,如果小偷藏在这个格子就会被发现。

请输出一种方案,

使得在2015小时内,对于小偷的初始位置和移动方法的所有可能情况都能保证抓到小偷。

 

 

题解:

绝对是签到题…几行代码就没了。

观察小偷的移动方法,发现不能垂直移动。

也就是说,每次移动时X坐标一定会变动1,Y坐标可能变也可能不变。

通过这个很容易发现,如果警察搜索的两个区域的X坐标不同,也就是说两个区域的上或下都有躲避处时,

如果小偷将被发现,那么小偷经过另一种移动序列使其中某一次Y坐标的是否变化反转时,

(这样会让这个时刻小偷的Y坐标变化)

小偷就不会被发现了。所以可以确定搜索的一定是同一列的两个格子。

所以问题转化为一维,于是可以奇偶分析。

考虑从左到右扫一次的方法,只有一种情况会让小偷躲过,

就是警察搜索x,小偷在x+1,下一小时小偷跑到x,警察搜索x+1…

这种情况如果发生,则每一小时内警察和小偷的位置的奇偶性不同。

也就是说第1小时小偷的位置是偶数。

那么我们可以做两次这个过程,要使得两次中某一次的第一小时中小偷在奇数位置。

显然只需要第一次过程进行奇数次搜索就好了,因为题目要求是2015,所以多一次少一次都可以。

(少一次可以是因为1000是偶数,小偷在奇数位置的情况肯定不会发生在1000这个位置)

(因为题目太水就不放代码了……)

posted @ 2015-11-30 20:36  MoebiusMeow  阅读(226)  评论(0编辑  收藏  举报