首页 > 其他分享 >2023秋季专题训练四(BFS2)

2023秋季专题训练四(BFS2)

时间:2023-12-14 21:44:49浏览次数:25  
标签:专题 yy1 int BFS2 vis 2023 push x1 1010

问题 D: 迷宫
注意行列的坑点即可,可以多开一维来判断方向
优先枚举转向少的,因为转向越少越可能达到

点击查看代码
int vis[110][110][5];//第三表示方向 0向上 1向右 2向下 3向左
char st[110][110];//存图,注意坑点:行列反过来
struct node{
    int x,y,kt,op;
    bool operator<(const node &v)const{//优先级
        return kt>v.kt;
    }
};
int n,m,x1,x2,yy1,y2,k;
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
void bfs(){
    priority_queue<node> q;
    //枚举四个方向
    q.push({x1,yy1,0,0});
    q.push({x1,yy1,0,1});
    q.push({x1,yy1,0,2});
    q.push({x1,yy1,0,3});
    while(q.size()){
        node t=q.top();
        if(t.x==x2&&t.y==y2&&t.kt<=k){
            cout<<"yes\n";
            return;
        }
        q.pop();
        if(vis[t.x][t.y][t.op]||t.kt>k) continue;//同一个方向走过或者已经超过k转了直接跳过
        vis[t.x][t.y][t.op]=1;
        //枚举四个方向
        for(int i=0;i<4;i++){
            int x=t.x+dx[i],y=t.y+dy[i];
            if(x<1||x>n||y<1||y>m||st[x][y]=='*') continue;
            if(t.op!=i){//如果方向不同,要多走一步
                q.push({x,y,t.kt+1,i});
            }
            else q.push({x,y,t.kt,i});
        }
    }
    cout<<"no\n";
    return;
}

问题 E: 水陆距离
多源bfs
判断每一个点距离0的最近距离
对于只有一个0点,可以利用队列遍历每个点,但是对于多个0点,我们可以利用优先队列维护最小值,优先使用最小的点,这样它遍历的附近点一定是最小的

点击查看代码
#include<bits/stdc++.h>
using namespace std;
 
int g[1010][1010],vis[1010][1010];
int a[1010][1010];
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
struct node{
    int x,y,step;
    bool operator<(const node &v)const{
        return step>v.step;
    }
};
 
priority_queue<node> q;
 
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>g[i][j];
            if(!g[i][j]) q.push({i,j,0});
        }
    }
    while(q.size()){
        node t=q.top();
        q.pop();
        if(vis[t.x][t.y]) continue;
        a[t.x][t.y]=t.step;
        vis[t.x][t.y]=1;
        for(int i=0;i<4;i++){
            int x=t.x+dx[i],y=t.y+dy[i];
            if(vis[x][y]||x<1||x>n||y<1||y>m) continue;
            q.push({x,y,t.step+1});
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cout<<a[i][j]<<' ';
        }
        cout<<'\n';
    }
    return 0; 
} 

标签:专题,yy1,int,BFS2,vis,2023,push,x1,1010
From: https://www.cnblogs.com/bu-fan/p/17902074.html

相关文章

  • 2023-2024-1学期20232316《网络空间安全导论》第六章学习总结
    第六章应用安全基础应用安全概述应用安全是什么应用安全是为保障各种应用系统在信息的获取、存储、传输和处理各个环节的安全所涉及的相关技术的总称。应用安全的核心支撑技术是密码技术。应用安全技术的基础和关键技术是系统安全技术与网络安全技术。身份认证是保障应用......
  • 2023.12.14
    7-1数据结构作业#include<iostream>#include<vector>usingnamespacestd;intmain(){intn,p;scanf("%d%d",&n,&p);vector<int>a(p,-1);//初始化数组,全为-1while(n--){intx;cin>>......
  • 【杂题乱写】12 月北京省选树上问题专题训练
    A.Luogu-P9058Ynoi2004rpmtdq解密:RangePairMininumTreeDistanceQuery支配对问题,这里的支配是若\(L\lel<r\leR\),且\(\mathrm{dist}(l,r)\le\mathrm{dist}(L,R)\),那么\((l,r)\)支配\([L,R]\)。考虑点分治,在过程中对每个分治中心\(ct\)以及节点\(i,j\),默认\(......
  • 2023-2024 20231313《计算机基础与程序设计》第十二周学习总结
    2023-202420231313《计算机基础与程序设计》第十二周学习总结作业速达作业课程班级链接作业要求计算机基础与程序设计第十二周学习总结作业内容《C语言程序设计》第11章并完成云班课测试作业正文我的作业目录教材总结总结学习过程中的问题《C语言程......
  • 2023-12-14 npm和yarn无法拉取依赖,cnpm可以 ==》切换镜像源
    这两天遇到个问题,是关于依赖无法拉取的问题,尽管我有三分猜到了是什么原因,但我还是不肯往那个方向思考,哎,真是死牛一便颈。如,我要给前端项目装个express框架,用npm装,装了大半天一点反应都没有,用yarn装就直接报网络无法连接,如图: 用cnpm装就没问题,秒过。注意:我的电脑是能正常上网......
  • 2023-2024-1 20231320 《计算机基础与程序设计》第十二周学习总结
    2023-2024-120231320《计算机基础与程序设计》第十二周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2022-2023-1计算机基础与程序设计第十二周作业)这个作业的目标<自学《C语言程序......
  • 2023-2024-1 20232301 《网络》第六周学习总结
    教材学习内容总结教材学习中的问题和解决过程问题1:对于习题中“如果针对差分你的一个统计查询是否可以无限制的进行重复查询?为什么?”这个问题经思考无果,存在困难问题1解决方案:询问chatgpt,得到了以下答案:在差分隐私(DifferentialPrivacy)的上下文中,无限制地进行重复查询是不可......
  • 2023年度总结
    又到了一年一度的总结时刻。对自己一年的工作做一些复盘和反思。从成败之中汲取经验教训,希望明年能更进一步。首先总结一下今年的一些工作,一月份至二月份主要完成了两件事,去年设计完成的芯片进行Signoff,以及投稿VLSI,中间插了个过年。时间紧任务重,大年夜家人在打牌,我在旁边赶论文......
  • 2023-2024-1学期20232423《网络空间安全导论》第六周学习总结
    教材学习——应用安全基础应用安全概述云计算造成了数据所有权和管理权的分离,在以下两方面开展持续研究:云计算基础设施的可信性、云数据安全保障。工业互联网:形成跨设备、跨系统、跨厂区、跨地区的互联互通,推动整个制造服务体系智能化。数据汇集到云端,要保证系统的可靠运行,......
  • 2023最新初级难度C#面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-初级难度C#面试题合集问:请简单介绍一下C#是什么,以及它的主要特点有哪些?C#是由Microsoft公司开发的一款面向对象的编程语言,它运行于.NETFramework之上,可用于创建各种类型的应用程序,如桌面应用、移动应用、游戏和Web应用等。关于C#的主......