zoukankan      html  css  js  c++  java
  • Poj 3669 Meteor Shower

    题目大意:

      开始一头牛在 0 0 位置,即为左下角,会有m个陨石落下来,第i个陨石会在ti时刻落在 xi yi 的位置,与其相邻的四个点和其落到的点都会被毁掉,牛想要走到一个永远不回有任何陨石砸到的地方,求走到这个地方的最小时间,如果走不到,则输出-1.

      要求:牛走过的路径上,对于任何一个点,牛到这个点的时刻不得大于等于任何陨石会落在这个点上的时刻。(即,陨石一旦落在某个点上,那么在这个时刻及以后,牛都不可以从这点上走过)

      陨石落下的点的坐标x y均在0-300之间,时间为0-1000之间,m<=5000

     

    思路:

      数组Time[x][y]记录点x y被砸到的最早时刻,假如从未被砸到,则设为-1.走的过程中,经过了哪一个点,就把那个点的Time顺便设置为走到那里的最早时刻,因为落下的陨石不会消失,所以假如经过一个地方,就不会需要再回来,因为即便晚点回来,情况也只会变得更糟罢了。

      走到一个Time为-1的地方,则说明到达了安全点。

      因为陨石落下的范围仅仅是0-300 所以如果到了300以外的地方,基本就是是安全的了。

      

      1.给Time标记

      注意标记的时候要判断是否已经被标记过了,如果是的,则更新为较小值。——因为这个地方卡主几次。

      2.把Cow(X=0,Y=0,Time=0)压入搜索队列中,开始搜索。

        每次从队列首提出一个点,假如这个点的到达时刻>=陨石砸到这里的时刻,则不继续搜索,否则,拓展周边四个点。

      3.提取出的队首的点如果陨石砸不到,则搜索到了安全点。

  • 相关阅读:
    iOS 完美解决 interactivePopGestureRecognizer 卡住的问题
    Entity Framework 的事务 DbTransaction
    EntityClient 介绍
    ObjectQuery查询及方法
    Entity SQL 初入
    LINQ to Entities 查询注意事项
    IQueryable接口与IEnumberable区别
    CodeFirst 的编程方式
    Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
    实体框架(Entity Framework)简介
  • 原文地址:https://www.cnblogs.com/dandi/p/3889186.html
Copyright © 2011-2022 走看看