• 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的奇偶性就可以了。。。。真的是一个神奇的大宝贝(?)。。。

    代码如下:





  • 相关阅读:
    华为上机练习题--求两个数组的总和
    C++设计模式之状态模式(四)
    深入理解java嵌套类和内部类
    c++实现精确计时
    Linux-中断和中断处理
    使用C#对MongoDB中的数据进行查询,改动等操作
    淘特房产CMS系统 7.5
    sass03 变量、样式导入
    sass02
    sass01
  • 原文地址:https://www.cnblogs.com/Pretty9/p/7347673.html
Copyright © 2020-2023  润新知