zoukankan      html  css  js  c++  java
  • 走格子

    走格子( (starstar ))

    • 时限:(1s) 内存:(256M)

    Descrption

    • (CYJ) 想找到他的小伙伴 (FPJ)(CYJ)(FPJ) 现在位于一个房间里,这个房间的布置可以看成一个 (N)(M) 列的矩阵,矩阵内的每一个元素会是下列情况中的一种:

      1. 障碍区域—这里有一堵墙(用 ‘(#)’表示).
      2. 这是 (CYJ) 最开始在的区域(用‘ (C) ’表示).
      3. 这是 (FPJ) 在的区域(用‘ (F)’表示).
      4. 空区域(用‘(.)’表示).
    • (CYJ) 携带了一个所谓传送枪的东西,这是一把可以创造传送门的枪械,在每一次行动中,他可以选择下列操作中的一项:

      1. 移向一个相邻的格子中(上,下,左,右,不能移到墙在的格子里).这个操作要消耗一个单位的时间.
      2. 转向一个墙(不需要相邻,只需面向即可),向其发射传送门,传送门会留在墙内面向你的地方(至多只能同时存在两扇传送门),若墙上已经有两扇传送门,而你发射了第三扇,那么最初发射的那一扇会消失。同时,你无法在一个位置制造两扇传送门(这个操作不会耗费时间)。
      3. 如果他与一块墙壁相邻且面前有一扇传送门,那么他可以移动到一扇传送门前方的格子。这个操作会耗费一个单位的时间.
    • (CYJ) 想要知道自己最少需要多少时间才能够从起点(‘(C)’)到达终点(‘(F) ’).

    • 请注意:我们保证地图边缘会是一圈墙壁且一定存在 ‘(C)’,‘(F)’.

    Input

    • 第一行输入两个正整数 (N)(M ,(4 ≤ N,M ≤ 500)).表示地图大小。
    • 接下来的 (N) 行每行一个长度为 (M)的字符串.表示地形。

    Output

    • 你需要输出最少的到达终点的时间,如果不能到达请输出”(no)”。

    Sample Input

    cell.in
    4 4
    ####
    #.F#
    #C.#
    ####
    cell.out
    2
    #### 样例2
    ​```plain
    cell.in
    6 8
    ########
    #.##..F#
    #C.##..#
    #..#...#
    #.....##
    ########
    cell.out
    4
    ​```
    #### 样例3
    ​```plain
    cell.in
    4 5
    #####
    #C#.#
    ###F#
    #####
    cell.out
    no
    ​```
    

    Sample Output

    
    

    Hint

    • 样例 (2) 解释

      • (C)((3,2)) 开始,我们首先向左发射传送门,再向下发射传送门,向左进入传送门,到达 ((5,2)),向右发射传送门,向下进入传送门,到达 ((5,6)),向上发射传送门,向右进入传送门,到达 ((2,6)),向右移动,到达 (F).

    • (50\%) 的数据满足:(4<= N,M <=15)

    • (100\%) 的数据满足:(4<= N,M <=500)

    • 来源:

    分析

    • 如果没有传送门,此题就是一个最基础的最短路,类似这样加传送门的题其实我们也做了不少了,只不过是根据传送门的性质建边就行了。
    • 分析此题的传送门的性质,任意一非墙的点 (x,y),和它相关的传送门有上下左右共四个,我们只要到达这四个传送门中的任意一个前面,我们就可以没有花费的任意在这四个传送门间传送,所以,(x,y) 到这四个传送门前面那个空地的距离相等,取 (x,y) 到墙的最近距离。
    • 这里我们有一个小优化,不用枚举每个点到四个墙的距离,我们可以把所有的墙放到队列里,然后跑一边 (bfs) 就求出了每个空点到最近墙的距离。
    • 建完边后跑一边最短路即可。
  • 相关阅读:
    redis系列:分布式锁
    Netty实现高性能IOT服务器(Groza)之手撕MQTT协议篇上
    DelayQueue
    java内置锁实现锁住代码块方案(同一个对象或锁住整个类.class)
    Java的类加载机制
    数据库事务特性ACID
    MQ关于实现最终一致性分布式事务原理解析
    数据库分库分表容量划分建议参考阿里云DRDS原则
    异常解决:Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
    OpenResty 简介
  • 原文地址:https://www.cnblogs.com/hbhszxyb/p/13439193.html
Copyright © 2011-2022 走看看