当前位置: 首页 > news >正文

【游戏——BFS+分层图】

题目

分析 

但凡是最优方案可能需要访问同一个点的情况,都需要应用“拆点”,或者说分层图的技巧。多出来的维度主要是区分同一个点的不同状态而用。

对于本题,访问的时机便是一个区分点。

对于类似题“AB路线”,同一个K段的位置是一个区分点(不会跨越一个K段,不然不是最优)。

代码

#include <bits/stdc++.h>
using namespace std;

const int N = 110;
const int M = 310;

int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};

struct node
{
    int x, y, t;
};

int l[N][N], r[N][N];
int dist[N][N][M];
bool st[N][N];
int n, m, t;

int bfs()
{
    memset(dist, 0x3f, sizeof dist);
    queue<node> q;
    q.push({1, 1, 0});
    dist[1][1][0] = 0;
    
    while(q.size())
    {
        auto u = q.front(); q.pop();
        
        for(int i = 0; i < 4; i++)
        {
            int x = u.x + dx[i];
            int y = u.y + dy[i];
            
            if(x < 1 || y < 1 || x > n || y > m) continue;
            if(dist[x][y][u.t+1] > u.t + 1 && (u.t + 1 < l[x][y] || u.t + 1 > r[x][y]))
            {
                if(x == n && y == m) return u.t + 1;
                dist[x][y][u.t+1] = u.t + 1;
                q.push({x, y, u.t+1});
            }
        }
    }
    
    return -1;
}

int main()
{
    scanf("%d%d%d", &n, &m, &t);
    for(int i = 1; i <= t; i++)
    {
        int x, y, a, b;
        scanf("%d%d%d%d", &x, &y, &a, &b);
        l[x][y] = a, r[x][y] = b;
    }
    
    printf("%d", bfs());
}

类似题 

AB路线——BFS+分层图-CSDN博客

http://www.dtcms.com/a/34948.html

相关文章:

  • 剖析IO原理和零拷贝机制
  • 【实战中提升自己】防火墙篇之双ISP切换与VRRP切换对于用户的体验
  • 【Java项目】基于Spring Boot的简历系统
  • 以 Tomcat 为例分析 Java 中的线程池
  • 正态分布的奇妙性质:为什么奇数阶中心矩(odd central moments)为零?
  • LeetCode 230.二叉搜索树中第K小的元素
  • MySQL自动备份脚本
  • 游戏引擎学习第120天
  • LeetCode刷题 -- 23. 合并 K 个升序链表
  • OO设计原则的cpp举例
  • centos 7 安装python3 及pycharm远程连接方法
  • 【信息系统项目管理师-案例真题】2009上半年案例分析答案和详解
  • 心理咨询小程序的未来发展
  • Java 面试合集(2024版)
  • 力扣3102.最小化曼哈顿距离
  • linux--多进程基础(2)GDB多进程调试(面试会问)
  • 大数据开发平台的框架
  • 一个不错的API测试框架——Karate
  • 【2025深度学习环境搭建-2】pytorch+Docker+VS Code+DevContainer搭建本地深度学习环境
  • JavaAPI(lambda表达式、流式编程)
  • echarts图表初始化搭建
  • 【数据结构进阶】哈希表
  • OpenSSL 生成非对称密钥对
  • 嵌入式科普(33)深度解析C语言中的const和volatile关键字
  • 浏览器跨域问题的原因分析及常见解决方案
  • flutter Column嵌套ListView高度自适应问题
  • stm32-电源控制
  • 第N1周:one-hot编码案例
  • Mysql 主从集群同步延迟问题怎么解决
  • 启动Redis报错记录