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

蓝桥杯刷题冲刺 | 倒计时18天

作者:指针不指南吗
专栏:蓝桥杯倒计时冲刺

🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾

文章目录

  • 0.知识点
  • 1.乳草的入侵

今天写 搜索题

0.知识点

  • DFS

    • 设计步骤
    1. 确定该题目的状态(包括边界)
    2. 找到状态转移方式
    3. 找到问题的出口、计数或者某一个状态
    4. 设计搜索
    • 代码模板
    ans  //答案,用全局变量来表示bool st[N]; //标记状态bool check(参数)
    {if(满足条件)return 1;return 0;
    }void dfs(int step)
    {if(判断边界){不在边界内,即回溯}尝试每一种可能  //for 循环{满足check条件//if标记 //  bool st[]继续下一步 dfs(step+1)恢复初始状态(回溯的时候要用到)}}
    
  • BFS

    • 前引

      一般使用队列来实现;

      BFS一般用于求最短路问题,边权为1

    • 步骤设计

      1. 确定该题目的状态(包括边界)
      2. 找到状态转移方式
      3. 找到问题的出口,计数或者某一个状态
      4. 设计搜索

      和前面的差不多,一般情况下,BFS 和 DFS 可以互换

    • 注意

      1. BFS=队列
      2. BFS:逐层扩展下一层,把扩展出的下一层状态放进队列中处理
      3. 如果这些状态有相同的,只需要搜一次,只需要进入队列一次
      4. 必须判重

1.乳草的入侵

  • 题目

    链接: 189. 乳草的入侵 - AcWing题库

    农民约翰一直努力让他的草地充满鲜美多汁而又健康的牧草。

    可惜天不从人愿,他在植物大战人类中败下阵来。

    邪恶的乳草已经在他的农场的西北部份占领了一片立足之地。

    草地像往常一样,被分割成一个高度为 Y,宽度为 X 的直角网格。

    (1,1)是左下角的格(也就是说坐标排布跟一般的 X,Y 坐标相同)。

    乳草一开始占领了格 (Mx,My)。

    每个星期,乳草传播到已被乳草占领的格子四面八方的每一个没有很多石头的格(包括垂直与水平相邻的和对角线上相邻的格)内。

    1 周之后,这些新占领的格又可以把乳草传播到更多的格里面了。

    达达想要在草地被乳草完全占领之前尽可能的享用所有的牧草。

    她很好奇到底乳草要多久才能占领整个草地。

    如果乳草在 0 时刻处于格 (Mx,My),那么几个星期以后它们可以完全占领入侵整片草地呢(对给定的数据总是会发生)?

    在草地地图中,. 表示草,而 * 表示大石。

    比如这个 X=4,Y=3 的例子。

    ....
    ..*.
    .**.
    

    如果乳草一开始在左下角(第 1 排,第 1 列),那么草地的地图将会以如下态势发展:

          ....  ....  MMM.  MMMM  MMMM  ..*.  MM*.  MM*.  MM*M  MM*M  M**.  M**.  M**.  M**.  M**M  
    星期数  0     1     2     3     4
    

    乳草会在 4 星期后占领整片土地。

    输入格式

    第 1 行: 四个由空格隔开的整数: X, Y, Mx, My

    第 2 到第 Y+1 行: 每行包含一个由 X 个字符(. 表示草地,* 表示大石)构成的字符串,共同描绘了草地的完整地图。

    输出格式

    输出一个整数,表示乳草完全占领草地所需要的星期数。

    数据范围

    1≤X,Y≤100

    输入样例:

    4 3 1 1
    ....
    ..*.
    .**.
    

    输出样例:

    4
    
  • 前n次 AC 0%

    #include<bits/stdc++.h>
    using namespace std;typedef pair<int,int> PII;const int N=110;int n,m,a,b;char g[N][N];
    int d[N][N];int dx[8]={0,0,-1,1,-1,1,-1,1},dy[8]={1,-1,0,0,1,1,-1,-1};bool check()  //判断是否满足条件,除了石头都是乳草
    {for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(g[i][j]=='.')return false;return true;
    }void f()  //输出调式用的
    {for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cout<<g[i][j];}cout<<endl;}cout<<endl;
    }void bfs()
    {memset(d,-1,sizeof d);  //初始化int cnt=0;  //扩展的次数queue<PII> q;q.push({m-b+1,a});d[m-b+1][a]=0;//下面几乎全错,没想出来怎么一次性扩展一层while(q.size()){auto t=q.front();q.pop();int flag=0;for(int i=0;i<8;i++){int x=t.first+dx[i],y=t.second+dy[i];if(d[x][y]==-1&&x>=1&&y>=1&&x<=n&&y<=m&&g[x][y]!='*'){flag=1;q.push({x,y});d[x][y]=d[t.first][t.second]+1;g[x][y]='M';}if(flag) cnt++;if(check()){cout<<cnt;return ;}}}}int main()
    {cin>>n>>m>>a>>b;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>g[i][j];  //看题,起点应该从1开始,存图g[m-b+1][a]='M';  //地图的坐标 (1,1)在右下角,(a,b)在二维数组里面的表示,在纸上举个例子,模拟一下,硬想我是真不行bfs();return 0;
    }
    
  • 模仿正确的题解写的 AC 0%

    #include<bits/stdc++.h>
    using namespace std;typedef pair<int,int> PII;const int N=110;int n,m;
    int ans,cnt;
    PII st;
    char g[N][N];
    int d[N][N],vis[N][N];
    int dx[8]= {1,-1,0,0,1,-1,1,-1}, dy[8]= {0,0,1,-1,1,-1,-1,1};void bfs()
    {queue<PII> q;q.push(st);d[st.first][st.second]=0;vis[st.first][st.second]=1;while(q.size()){auto t=q.front();q.pop();for(int i=0;i<8;i++){int x=st.first+dx[i],y=st.second+dy[i];if(!vis[x][y]&&x>=1&&x<=n&&y>=1&&y<=m&&g[x][y]!='*'){cnt--;vis[x][y]=1;q.push({x,y});d[x][y]=d[t.first][t.second]+1;ans=max(ans,d[x][y]);if(cnt==0) return ;}}}
    }int main()
    {scanf("%d%d%d%d\n",&n,&m,&st.second,&st.first);for(int i=n;i>=1;i--)for(int j=1;j<=m;j++){cin>>g[i][j];if(g[i][j]=='.')cnt++;}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cout<<g[i][j];cout<<endl;if(g[st.first][st.second]=='.') cnt--;bfs();cout<<ans;return 0;
    }
    

    不知道哪错了 Debug 中

  • 正确代码

    #include <bits/stdc++.h>
    using namespace std;
    #define fir(i,a,b) for(int i=a;i<=b;i++)
    #define pii pair<int,int>
    #define mk(a,b) make_pair(a,b)
    const int dx[8]= {1,-1,0,0,1,-1,1,-1};
    const int dy[8]= {0,0,1,-1,1,-1,-1,1};
    const int N=110;
    pii st,now;
    char s[N][N];
    int cnt,n,m,vis[N][N],ans,dis[N][N];
    queue<pii> q;
    int check(int x,int y)//判断:在范围;没有被访问过;不是石头
    {return x>=1 && x<=n && y>=1 && y<=m && vis[x][y]==0 && s[x][y]!='*';
    }
    int bfs()
    {q.push(st);dis[st.first][st.second]=0;vis[st.first][st.second]=1;while(q.size()){now=q.front();q.pop();fir(i,0,7){int x=now.first+dx[i],y=now.second+dy[i];//拓展if (check(x,y)){cnt--;vis[x][y]=1;dis[x][y]=dis[now.first][now.second]+1;ans=max(ans,dis[x][y]);//找出最大的dis,也就是最后答案q.push(mk(x,y));if (cnt==0)//所有的草地被占满了.return 1;}}}
    }
    int main()
    {scanf("%d%d%d%d\n",&m,&n,&st.second,&st.first);//读入真是博大精深啊!!!!!for(int i=n; i>=1; i--){for(int j=1; j<=m; j++){s[i][j]=getchar();if (s[i][j]=='.')cnt++;//统计有多少个空}getchar();}if (s[st.first][st.second]=='.')//刚开始就有一根乳草.cnt--;bfs();cout<<ans;
    }
    
  • 反思

    今天晚上没课,四个小时就做这个题,最后还没做出来

    • 往外扩展几层,直接就是 最短距离 d[x]

    最大的收获就是 (1,1)在左下角的坐标的表示,详细看代码

    • 中间有一次,考虑这个问题,但只是仅仅想到一个起始点的坐标,没考虑全面,整个数组都是

    今天的时间真的浪费掉了,应该及时看题解的

Alt

相关文章:

蓝桥杯刷题冲刺 | 倒计时18天

作者&#xff1a;指针不指南吗 专栏&#xff1a;蓝桥杯倒计时冲刺 &#x1f43e;马上就要蓝桥杯了&#xff0c;最后的这几天尤为重要&#xff0c;不可懈怠哦&#x1f43e; 文章目录0.知识点1.乳草的入侵今天写 搜索题 0.知识点 DFS 设计步骤 确定该题目的状态&#xff08;包括边…...

经典算法面试题——Java篇-附带赠书活动,评论区随机选取一人赠书

目录 一.图书推荐 二.说一下什么是二分法&#xff1f;使用二分法时需要注意什么&#xff1f;如何用代码实现&#xff1f; 三.什么是插入排序&#xff1f;用代码如何实现&#xff1f; 四.什么是冒泡排序&#xff1f;用代码如何实现&#xff1f; 五.什么是斐波那契数列&#…...

支持RT-Thread最新版本的瑞萨RA2E1开发板终于要大展身手了

支持RT-Thread最新版本的瑞萨RA2E1开发板终于要大展身手了 熟悉RT-Thread和瑞萨MCU的朋友都知道&#xff0c;当前RT-Thread仓库的主线代码是不支持RA2E1这个BSP的。刚好&#xff0c;最近我在联合瑞萨推广一个叫《致敬未来的攻城狮计划》&#xff0c;使用的就是RA2E1开发板&…...

【C语言进阶】 12. 假期测评①

day01 1. 转义字符的判断 以下不正确的定义语句是&#xff08; &#xff09; A: double x[5] {2.0, 4.0, 6.0, 8.0, 10.0}; B: char c2[] {‘\x10’, ‘\xa’, ‘\8’}; C: char c1[] {‘1’,‘2’,‘3’,‘4’,‘5’}; D: int y[53]{0, 1, 3, 5, 7, 9}; 【答案解析】 B 本…...

给程序加个进度条吧,1行Python代码,快速添加~

大家好&#xff0c;这里是程序员晚枫。 你在写代码的过程中&#xff0c;有没有遇到过以下问题&#xff1f; 已经写好的程序&#xff0c;想看看程序执行的进度&#xff1f; 在写代码批量处理文件的时候&#xff0c;如何显示现在处理到第几个文件了&#xff1f; &#x1f446…...

常见的Keil5编译报错及其原因和解决方法

以下是几种常见的Keil5编译报错及其原因和解决方法&#xff1a; "Error: L6218E: Undefined symbol"&#xff08;未定义符号错误&#xff09; 这通常是由于缺少对应的库文件或者代码中有未声明的变量或函数引起的。解决方法是检查相应的库文件是否已正确添加到工程中…...

Django 实现瀑布流

需求分析 现在是 "图片为王"的时代&#xff0c;在浏览一些网站时&#xff0c;经常会看到类似于这种满屏都是图片。图片大小不一&#xff0c;却按空间排列&#xff0c;就这是瀑布流布局。 以瀑布流形式布局&#xff0c;从数据库中取出图片每次取出等量&#xff08;7 …...

传输层协议----UDP/TCP

文章目录前言一、再谈端口号端口号的划分认识知名端口号(Well-Know Port Number)两个问题nestatpidof二、UDP协议UDP协议端格式UDP的特点面向数据报UDP的缓冲区UDP使用注意事项基于UDP的应用层协议二、TCP协议TCP协议段格式可靠性问题确认应答(ACK)机制流量控制六个标志位PSHUG…...

教你如何快速在Linux中找到某个目录中最大的文件

工作中经常会有查看某个目录下最大的文件的需求&#xff0c;比如在运维工作中&#xff0c;发现某个系统或功能不工作了&#xff0c;经排查发现是服务器空间满了…那么接下来就需要清理一下临时文件或者日志文件&#xff0c;或者其他不需要的文件&#xff0c;那么就会想要查看一…...

Java二叉树面试题讲解

Java二叉树面试题讲解&#x1f697;1.检查两颗树是否相同&#x1f695;2.另一颗树的子树&#x1f699;3.二叉树最大深度&#x1f68c;4.判断一颗二叉树是否是平衡二叉树&#x1f68e;5.对称二叉树&#x1f693;6.获取树中结点个数&#x1f691;7.判断一个树是不是完全二叉树&am…...

rancher2.6进阶之nfs动态创建pv配置

添加NFS client provisioner 动态提供K8s后端存储卷 1.1.前提说明 1.1.1.说明 NFS client provisioner 利用 NFS Server 给 Kubernetes 作为持久存储的后端,并且动态提供PV。 默认 rancher 2 的存储类中的提供者不包含NFS,需要手动添加;添加方式有两种: 1)从应用商店直接安…...

快速上手vue elementUI好看的登录界面

这是一个非常非常适合新手的vue登录界面&#xff0c;总体来说美观大气&#xff0c;axios那部分没有发&#xff0c;有需要的大家可以自己进行二次开发&#xff0c;继续编写。 用到了技术栈有 vue/cli 5.07 element-ui 2.15.9 适合入门级新手&#xff0c;展示下页面 emmm验证码…...

Vue趣味【Vue3+Element Plus+Canvas实现一个简易画板;支持导出为图片】

目录&#x1f31f;前言&#x1f31f;粉丝先看&#x1f31f;创建Vue3项目&#x1f31f;引入Element Plus&#x1f31f;实现代码&#xff08;详细注释&#xff09;&#x1f31f;写在最后&#x1f31f;JSON包里写函数&#xff0c;关注博主不迷路&#x1f31f;前言 哈喽小伙伴们&a…...

【Spring Cloud Alibaba】2.服务注册与发现(Nacos安装)

文章目录环境要求简介安装Nacos源码安装Docker安装数据库配置访问服务我们要搭建一个Spring Cloud Alibaba项目就绕不开Nacos&#xff0c;阿里巴巴提供的Nacos组件&#xff0c;可以提供服务注册与发现和分布式配置服务&#xff0c;拥有着淘宝双十一十几年的流量经验&#xff0c…...

深度学习 Day28——利用Pytorch实现好莱坞明星识别

深度学习 Day28——利用Pytorch实现好莱坞明星识别 文章目录深度学习 Day28——利用Pytorch实现好莱坞明星识别一、前言二、我的环境三、前期工作1、导入依赖项设置GPU2、导入数据集3、划分数据集四、调用官方的VGG16模型五、训练模型1、编写训练函数2、编写测试函数3、设置动态…...

Android中使用FCM进行消息推送

Firebase Cloud Message 的介绍 Firebase Cloud Message(FCM)是由Google推出的一种云端消息推送服务,它是由Google推出的Google Cloud Messaging(GCM)服务的升级版。在2016年5月,Google宣布将Google Cloud Messaging重命名为Firebase Cloud Message,作为Firebase的一部…...

从 X 入门Pytorch——BN、LN、IN、GN 四种归一化层的代码使用和原理

Pytorch中四种归一化层的原理和代码使用前言1 Batch Normalization&#xff08;2015年提出&#xff09;Pytorch官网解释原理Pytorch代码示例2 Layer Normalization&#xff08;2016年提出&#xff09;Pytorch官网解释原理Pytorch代码示例3 Instance Normalization&#xff08;2…...

Windows环境下实施域名访问的一些小知识

文章目录 前言一、windows域名访问流程二、网络域名访问配置设置DNS未正确设置DNS的结果三、本地hosts设置本地hosts本地hosts的优先机制本地hosts的内部访问次序示例一示例二总结前言 作为一种常见的操作系统,windows系统具有其特殊的域名访问管理机制。了解其访问机制,将有…...

78.qt QCustomPlot介绍

参考https://www.qcustomplot.com/index.php/tutorials/settingup 下载地址: https://www.qcustomplot.com/index.php/download 1.添加帮助文档 在QtCreator ——>工具——>选项——>帮助——>文档——>添加,选择qcustomplot.qch文件,确定,以后按F1就能跳转到…...

win32api之文件系统管理(七)

什么是文件系统 文件系统是一种用于管理计算机存储设备上文件和目录的机制。文件系统为文件和目录分配磁盘空间&#xff0c;管理文件和目录的存储和检索&#xff0c;以及提供对它们的访问和共享&#xff0c;以下是常见的两种文件系统&#xff1a; NTFSFAT32磁盘分区容量2T32G…...

Allegro16.6 矩形槽孔焊盘 说明

铣刀实际直径 对应 mil 值 ncroutebits.txt 写法 输出 rou 里自动变成 0.60 mm 23.62 mil 23.62 T01 T01C.02362 0.65 mm 25.59 mil 25.59 T01 T01C.02559 0.70 mm 27.56 mil 27.56 T01 T01C.02756 0.80 mm 31.50 mil 31.50 T01 …...

LVGL样式进阶:别再只改颜色了!手把手教你定制lv_switch的动画和lv_btn的按压反馈

LVGL样式进阶&#xff1a;别再只改颜色了&#xff01;手把手教你定制lv_switch的动画和lv_btn的按压反馈 在嵌入式UI开发中&#xff0c;LVGL作为轻量级图形库的代表&#xff0c;其样式系统的灵活性常常被低估。大多数开发者停留在修改背景色、字体颜色等基础操作&#xff0c;却…...

MCP模型控制平面:AI自动化系统的可观察、可治理底座

1. 项目概述&#xff1a;MCP到底是什么&#xff0c;它凭什么被称为AI自动化的“金钥匙”“MCP——The Golden Key for AI Automation”这个标题一出来&#xff0c;很多刚接触AI工程化的朋友第一反应是&#xff1a;又一个新造词&#xff1f;听着像营销话术。但我在过去三年里&am…...

揭秘开源项目的高效实现:QMC音频文件解密技术深度解析

揭秘开源项目的高效实现&#xff1a;QMC音频文件解密技术深度解析 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾经遇到过从QQ音乐下载的音频文件无法在其他播放器…...

为了还原具身智能科研市场的全貌,我们找了多个头部高校聊聊

具身智能「最大客户说」 在具身智能所有喧嚣的落地故事里&#xff0c;科研市场是最沉默也最关键的那一个。 这是无数创业公司拿到的第一笔真正意义上的收入&#xff0c;帮助团队度过了最艰难的从0到1的商业化探索阶段&#xff0c;也让机器人本体在成百上千次的拆解、改装、调…...

如何修复损坏的QR码?QRazyBox完整使用指南

如何修复损坏的QR码&#xff1f;QRazyBox完整使用指南 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你是否曾经遇到过这样的困境&#xff1a;一张重要的QR码因为打印模糊、污渍或人为损坏而…...

2026时序数据库选型指南:为什么Apache IoTDB成为工业物联网首选

在数字化转型全面加速的今天&#xff0c;工业物联网、车联网、能源电力、智能制造等领域产生了海量的时序数据。这些数据具有高并发写入、海量存储、时间范围查询密集、实时分析要求高等特点&#xff0c;传统的关系型数据库和NoSQL数据库在处理这类数据时往往力不从心。 目录 …...

Barlow字体:54种样式打造专业级设计效果,提升你的视觉表达力

Barlow字体&#xff1a;54种样式打造专业级设计效果&#xff0c;提升你的视觉表达力 【免费下载链接】barlow Barlow: a straight-sided sans-serif superfamily 项目地址: https://gitcode.com/gh_mirrors/ba/barlow Barlow是一款源自加州公共视觉美学的专业字体家族&a…...

STM32F407VET6现货

随着科技的发展&#xff0c;越来越多的应用场景需要更强大的处理能力、更丰富的外设支持以及更高的性价比。STM32F407VET6作为意法半导体&#xff08;STMicroelectronics&#xff09;旗下的一款高性能微控制器&#xff0c;在工业自动化、医疗设备、家用电器等多个领域展现出了卓…...

G-Helper:轻量级开源硬件控制工具的深度技术解析

G-Helper&#xff1a;轻量级开源硬件控制工具的深度技术解析 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertb…...