HDU-1010 Tempter of the Bone(奇偶剪枝)


题意: 有一只可爱的不得了的小狗狗,迷上了一根小骨头,当它叼起了小骨头的时候却发现这是一个陷阱,小骨头就这样背叛了它(咳咳咳),然后它踩着的地面下一秒就会下沉,所以不能在一块地面停留超过一秒钟,倒霉的是,这个迷宫的大门只会在规定的时间内打开不超过1分钟,所以小狗必须在规定时间内到达大门才能逃出迷宫。。。


先是看了一眼数据范围,然后果断深度优先搜索,然后,然后就TLE,然后就眉头一皱发现问题并不简单,原来是缺少了一个必要的技能,那就是奇偶剪枝。。。

先看这样一幅图:

0
1
0
1
0
1
0
1
0
1
0
1
0 1 0
1
0 1 0 1
大概不难看出从标0的格子到标0的格子要走偶数步,从标1的格子到标1的格子也要走偶数步,而从标0的格子到标1的格子要走奇数步,所以当给的步数为奇数时,不可能从1位走到另一个1位(或从0到0),设从一个格子A到另一个格子B的最短距离为min,min=abs(x1-x2)+abs(y1-y2); 因为沿途还可能会有障碍,所以A到B的距离dist=min+s; s一定是偶数,所以min和dist同奇偶,所以只要判断给出的限制步数与dist的奇偶性就可以了。。。。真的是一个神奇的大宝贝(?)。。。

代码如下:





posted @ 2017-08-09 15:30  Pretty9  阅读(150)  评论(0编辑  收藏  举报