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

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

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

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

文章目录

  • 1.长草
  • 2.分考场

1.长草

  • 题目

  • 链接: 长草 - 蓝桥云课 (lanqiao.cn)

    题目描述

    小明有一块空地,他将这块空地划分为 nm 列的小块,每行和每列的长度都为 1。

    小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地。

    这些草长得很快,每个月,草都会向外长出一些,如果一个小块种了草,则它将向自己的上、下、左、右四小块空地扩展,

    这四小块空地都将变为有草的小块。请告诉小明,k 个月后空地上哪些地方有草。

    输入描述

    输入的第一行包含两个整数 n*,*m。

    接下来 n 行,每行包含 m 个字母,表示初始的空地状态,字母之间没有空格。如果为小数点,表示为空地,如果字母为 g,表示种了草。

    接下来包含一个整数 k。 其中,2≤n,m≤1000,1≤k≤1000。

    输出描述

    输出 n 行,每行包含 m 个字母,表示 k 个月后空地的状态。如果为小数点,表示为空地,如果字母为 g,表示长了草。

    输入输出样例

    示例

    输入

    4 5
    .g...
    .....
    ..g..
    .....
    2
    

    输出

    gggg.
    gggg.
    ggggg
    .ggg.
    
  • 第一次 AC 0%

    #include<bits/stdc++.h>
    using namespace std;typedef pair<int,int> PII;
    int const N=1100;int n,m,k;
    char g[N][N];
    int d[N][N];
    queue<PII> q;void bfs()
    {int dx[4]={0,0,-1,1},dy[4]={1,-1,0,0};while(q.size()){auto t=q.front();q.pop();for(int i=0;i<4;i++){int x=t.first+dx[i],y=t.second+dy[i];if(d[x][y]==-1&&x<=n&&x>=1&&y<=m&&y>=1&&g[x][y]=='.'){q.push({x,y});g[x][y]='g';d[x][y]=d[t.first][t.second]+1;if(d[x][y]==k)return ;}}}}int main()
    {scanf("%d%d",&n,&m);memset(d,-1,sizeof d);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){cin>>g[i][j];if(g[i][j]=='g'){q.push({i,j});d[i][j]=0;}}scanf("%d",&k);bfs();for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cout<<g[i][j];}cout<<endl;}return 0;
    }
    
  • 题解

    #include<bits/stdc++.h>
    using namespace std;typedef pair<int,int> PII;
    int const N=1100;int n,m,k,cnt;
    char g[N][N];
    int d[N][N];
    queue<PII> q;
    int len;void bfs()
    {int dx[4]={0,0,-1,1},dy[4]={1,-1,0,0};while(q.size()&&k>0){auto t=q.front();q.pop();for(int i=0;i<4;i++){int x=t.first+dx[i],y=t.second+dy[i];if(d[x][y]==-1&&x<=n&&x>=1&&y<=m&&y>=1&&g[x][y]=='.'){q.push({x,y});g[x][y]='g';}}len--;     //一个点向四周扩展完之后,len--,表示这层的一个点已经完成扩展 //这里是重点!!!if(len==0)  //len ==0 说明这层的点已经全部完成扩展,令 len 重新等于刚扩展过程中放进去点的个数(即q.size(),我们之前的点都已经pop掉了,所以现在队列里面的点都是新放进去,属于下一层的点),并且层数k--{k--;len=q.size();}}}int main()
    {scanf("%d%d",&n,&m);memset(d,-1,sizeof d);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){cin>>g[i][j];if(g[i][j]=='g'){q.push({i,j});}}len=q.size();		//最开始计往里面放了几个元素 len=q.size( )scanf("%d",&k);bfs();for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cout<<g[i][j];}cout<<endl;}return 0;
    }
    
  • 反思

    第一次的扩展层数不正确,代码没有实现成功;

    题解中的记录扩展层数的方式:

    • 最开始计往里面放了几个元素 len=q.size( )
    • 一个点向四周扩展完之后,len–,表示这层的一个点已经完成扩展
    • len ==0 说明这层的点已经全部完成扩展,令 len 重新等于刚扩展过程中放进去点的个数(即q.size(),我们之前的点都已经pop掉了,所以现在队列里面的点都是新放进去,属于下一层的点),并且层数k–

2.分考场

  • 题目

    链接: 分考场 - 蓝桥云课 (lanqiao.cn)

    n 个人参加某项特殊考试。

    为了公平,要求任何两个认识的人不能分在同一个考场。

    求最少需要分几个考场才能满足条件。

    输入描述

    第一行,一个整数 n (1≤n≤100),表示参加考试的人数。

    第二行,一个整数 m,表示接下来有 m 行数据。

    以下 m 行每行的格式为:两个整数 a*,b,用空格分开 ( 1≤a,b≤*n )表示第 a 个人与第 b 个人认识。

    输出描述

    输出一行一个整数,表示最少分几个考场。

    输入输出样例

    示例

    输入

    5
    8
    1 2
    1 3
    1 4
    2 3
    2 4
    2 5
    3 4
    4 5
    

    输出

    4
    
  • 第一次 AC 0%

    #include<bits/stdc++.h>
    using namespace std;const int N=110;int n,m,ans;
    int p[N],s[N];int find(int x)
    {if(x!=p[x]) p[x]=find(p[x]);return p[x];
    }void add(int a,int b)
    {s[b]+=s[a];ans=max(ans,s[b]);p[b]=find(p[a]);
    }int main()
    {scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){p[i]=i;s[i]=1;}while(m--){int a,b;scanf("%d%d",&a,&b);add(a,b);}cout<<ans;return 0;} 
    

    想错了,这题长得真像并查集,a和b认识,b和c认识,但是a和b不一定认识

    经过思考,我的思路:

    先把n个数放在一个房间里面,a,b 认识,把其中一个从他们房间里面移出去;

    移到隔壁房间,隔壁房间有认识的人,往下轮,直到找到没有认识的人房间,如果都不行,就新建一个房间 ans++

    怎么实现呢

  • 题解

    #include<bits/stdc++.h>
    using namespace std;const int N=110;int n,m;
    bool g[N][N];  //矩阵数组:两个人认识为1,不认识为 0
    vector<int>q[N];  //定义一个二维空间数组
    int ans=0x3f3f3f3f;  //定义最后需要的房间bool check(int id,int p)  //判断 p 这个考场,能不能放 id 这个人
    {for(int j=0;j<q[p].size();j++)  //q[p].size() 表示考场的人数,精髓{if(g[id][q[p][j]])return false;}return true;
    } void dfs(int id,int cnt)
    {if(cnt>=ans)  //剪枝:一定不是最小的结果,回溯return;if(id==n+1)  // 所有人 都遍历了,回溯{ans=min(ans,cnt);  return;}for(int p=1;p<=cnt;p++)  //遍历每一个考场 {if(check(id,p)) //考场里没有熟人 {q[p].push_back(id);  //id放在 p这个考场里面dfs(id+1,cnt);  //放下一个 学生q[p].pop_back();   //恢复现场} }if(cnt<n)  //经过上面的遍历每一个考场,没有 dfs ,说明没有考场可以放 id,so开一个新的考场{q[cnt+1].push_back(id);  //cnt+1dfs(id+1,cnt+1);  q[cnt+1].pop_back();   //回复现场}}int main()
    {cin>>n>>m;while(m--){int a,b;cin>>a>>b;if(a!=b)g[a][b]=1,g[b][a]=1;}dfs(1,0);  //编号为 1,房间数号 0 cout<<ans; return 0;
    }
    
  • 反思

    怎么实现呢?我想了用邻接表,但是没有实现出来

    题解中的vector二维数组真是妙

    vector 二维数组:

    • vector<int> q[m] 表示可以往 q[1],q[2] 里面放一个数组,

      q[2][3] 表示 q[2]这个数组的 第 3个元素,根据上面题中理解更透彻

      而且还可以 使用 q[2].size() 就很方便

    审题,避免整个思路方向性出现错误,dfs 会使用成 并查集 ,老生常谈

Alt

相关文章:

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

作者&#xff1a;指针不指南吗 专栏&#xff1a;蓝桥杯倒计时冲刺 &#x1f43e;马上就要蓝桥杯了&#xff0c;最后的这几天尤为重要&#xff0c;不可懈怠哦&#x1f43e; 文章目录1.长草2.分考场1.长草 题目 链接&#xff1a; 长草 - 蓝桥云课 (lanqiao.cn) 题目描述 小明有一…...

冲击蓝桥杯-并查集,前缀和,字符串

目录 前言 一、并查集 1、并查集的合并&#xff08;带路径压缩&#xff09; 2、询问是否为同一个集合 3、例题 二、前缀和 1 、前缀和是什么 2、经典题目 三- 字符串处理 1、字符串的插入 2、字符串转化为int类型 3、字符反转 前言 并查集合前缀&#xff0c;字符串…...

【matlab学习笔记】线性方程组求解方法

线性方程组求解方法2.1 求逆法实现方式例子2.2 分解法LU分解&#xff08;Doolittle分解&#xff09;实现方法例子QR分解法实现方法例子Cholesky 分解法实现方法例子奇异值分解法实现方法例子Hessenberg 分解实现方法例子Schur 分解实现方法例子2.3 迭代法逐次迭代法里查森迭代法…...

Python带你一键下载到最新章节,不付费也能看

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 完整源码、素材皆可点击文章下方名片获取此处跳转 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 requests 发送请求/第三方模块 模块安装&#xff1a;win R 输入cmd 输入安装命令 pip install 模块名 如果…...

【sentinel】熔断降级规则详解及源码分析

概述 除了流量控制以外&#xff0c;对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块&#xff0c;可能是另外的一个远程服务、数据库&#xff0c;或者第三方API等。例如&#xff0c;支付的时候&#xff0c;可能需要远程调用银联…...

ffplay源码分析-main函数入口分析

ffplay源码分析-main函数入口分析 基于ffmpeg6.0源码分析。 流程 使用ffplay播放视频文件&#xff0c;会触发main函数的调用。main函数中会进行以下操作&#xff1a; 从命令行中解析日志级别、日志是否需要落文件、是否要输出banner信息。banner信息包含版权、库的版本。注…...

C++三种继承方式

C继承的一般语法为&#xff1a;class 派生类名:&#xff3b;继承方式&#xff3d; 基类名{派生类新增加的成员};继承方式限定了基类成员在派生类中的访问权限&#xff0c;包括 public&#xff08;公有的&#xff09;、private&#xff08;私有的&#xff09;和 protected&#…...

【Android -- 软技能】《软技能:代码之外的生存指南》之好书推荐(一)

前言 这是一本由美国的一个软件开发人员写的&#xff0c;但书中除了有 Java 、C# 几个单词外&#xff0c;没有一行代码。 因为这本书讲的是代码之外的东西。 文章目录结构&#xff1a; 1. 职业 从业心态&#xff1a;说白了就是要有责任心&#xff0c;把每份工作要当成是自…...

Nginx可视化管理工具 - Nginx Proxy Manager

一、介绍 nginx-proxy-manager 是一个反向代理管理系统,它基于Nginx,具有漂亮干净的 Web UI。还可以获得受信任的 SSL 证书,并通过单独的配置、自定义和入侵保护来管理多个代理。 其官网地址如下: https://nginxproxymanager.com/ 二、安装 第一步:192.168.1.108服务…...

https是如何保证安全的

在学习http与https的区别的时候&#xff0c;我们通常从以下几点出发&#xff1a;http是超文本传输协议&#xff0c;是明文传输&#xff0c;有安全风险&#xff0c;https在TCP和http网络层之间加入了SSL/TLS安全协议&#xff0c;使得报文能够加密传输http连接简单&#xff0c;三…...

ubuntu下使用GCC开发单片机的过程

以下是一个简单的单片机C程序示例,实现的功能是控制LED灯的闪烁: #include <reg52.h> // 导入单片机的寄存器定义void main() {while(1) { // 无限循环P1 = 0x00; // P1口输出低电平delay(1000); // 延时1秒P1 = 0xff; // P1口输出高电平delay(1000); // 延时1秒…...

人工智能能否取代软硬件开发工程师

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 人工智能发展趋势 随着AI技术的不断发展&#xff0c;它正在改变我们的生活方式、商业模式和工作方式。人工智能技术的发展一直处于快速变化和持续创新的状态&#xff0c;以下…...

BPI-R3开发板 - uboot编译

一. 获取源码 https://github.com/mtk-openwrt/u-boot 二. 编译步骤 编译环境为ubuntu 18.04。交叉编译工具链我用的是openwrt编译生成的工具链&#xff0c;并设置到环境变量&#xff0c;如下&#xff1a; export PATH$PATH:/root/mt8976/BPI-R3-OPENWRT-V21.02.3-main/staging…...

优秀程序员的5个特征,你在第几层?

每个人程序员都对未来的职业发展有着憧憬和规划&#xff0c;要做架构师、要做技术总监、要做CTO。但现实总是复杂的&#xff0c;日复一日的工作与生活总能让人一次又一次地陷入迷茫。大部分原因就是对职业发展轨迹和自我能力提升的一般规律缺乏认识&#xff0c;做事找不到方向或…...

JAVA Session会话 Thymeleaf - 视图模板技术配置步骤

JAVAWebSession会话会话跟踪技术session保存作用域Thymeleaf - 视图模板技术配置过程Session会话 HTTP是无状态的&#xff1a;服务器无法区分这两个请求是同一个客户端发过来的&#xff0c;还是不同的客户端发过来的 现实问题&#xff1a;第一次请求是添加商品到购物车&#x…...

Linux编译cpprestsdk库

本文用的Linux系统为Ubuntu22.04&#xff0c;自带GCC11.3.0。 依赖 ①编译需要boost库&#xff0c;本文用的库版本为boost-1.82.0.beta1.tar.gz。 ②编译需要openssl库&#xff0c;这里使用的版本为openssl-1.1.1s.tar.gz。 ③编译需要cmake库&#xff0c;本文使用的是cmake-3…...

算法的时间复杂度和空间复杂度

目录 1 如何衡量一个算法的好坏 2.时间复杂度 2.1 时间复杂度的概念 2.2 大O的渐进表示法 2.3常见代码举例 2.3.1 Func2 O(N) 2.3.2 Func3 O(MN) 2.3.3 Func4 O(1) 2.3.4 Func5 strchr O(N) 2.3.5 Func6 冒泡排序 O(N^2) 2.3.6 Func7 二分…...

基本认识vue3

一、基本搭建 项目搭建 使用 最新的 Vue3 TS Vite项目 执行命令 &#xff08;本项目采用如下方式&#xff09; npm create vitelatest my-vite-app --template vue-ts或者 运行项目 npm install npm run dev项目搭建初始化目录 新搭建的项目可能会遇到个问题&#xf…...

HTTP/HTTPS协议认识

写在前面 这个博客我们要要讨论的是协议,主要是应用层.今天我们将正式认识HTTP和HTTPS,也要认识序列化和反序列化,内容比较多,但是不难 再谈协议 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层,我们要完成下面三个步骤. sock的使用 定制…...

【VScode】远程连接Linux

目录标题1. 安装扩展插件2. 在Linux上操作3. 确定Linux的IP地址4. 远程连接到Linux5. 实现免密码登录使用 VScode 远程编程与调试的时有会用到插件 Remote Development&#xff0c;使用这个插件可以在很多情况下代替 vim 直接远程修改与调试服务器上的代码&#xff0c;同时具备…...

别再只会用A4988了!用STM32+L298N手撸42步进电机细分驱动(附256细分算法)

从零构建STM32L298N的256细分步进电机驱动系统 在创客和嵌入式开发领域&#xff0c;步进电机控制一直是个既基础又充满挑战的课题。市面上常见的A4988、DRV8825等驱动模块虽然方便&#xff0c;但当项目需要更高精度、更灵活控制时&#xff0c;这些现成方案往往显得力不从心。本…...

制造业生产管理应用搭建指南:轻流无代码平台完整实施流程——生产效率提升 300% 方法论

制造业生产管理应用搭建指南&#xff1a;轻流无代码平台完整实施流程——生产效率提升 300% 方法论制造业生产管理应用搭建指南&#xff1a;轻流无代码平台完整实施流程——生产效率提升 300% 方法论引言&#xff1a;背景与重要性工信部《智能制造发展规划》明确提出&#xff0…...

AutoConnect:ESP32/ESP8266 运行时 Wi-Fi 配网与 OTA 一体化方案

1. AutoConnect 库深度技术解析&#xff1a;面向嵌入式工程师的 ESP32/ESP8266 运行时 Wi-Fi 配置系统AutoConnect 是一个专为 ESP32 和 ESP8266 平台设计的 Arduino 库&#xff0c;其核心目标是在设备运行时&#xff08;runtime&#xff09;通过 Web 界面完成 Wi-Fi 网络的动态…...

多智能体协作四大架构模式:Subagents/Skills/Handoffs/Router完全指南

← 上一篇&#xff1a;AI大模型3月终局&#xff1a;商业化转向、智能体崛起与安全红线 → 下一篇&#xff1a;大模型推理加速2026&#xff1a;从500ms到80ms的完整优化路径 摘要 当单个 AI Agent 无法高效处理复杂任务时&#xff0c;多智能体系统&#xff08;Multi-Agent Sys…...

5步告别Windows卡顿:Win11Debloat系统优化工具让电脑性能提升51%的实战指南

5步告别Windows卡顿&#xff1a;Win11Debloat系统优化工具让电脑性能提升51%的实战指南 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各…...

离网逆变器下垂控制实战:从公式推导到MATLAB仿真(附资源下载)

离网逆变器下垂控制实战&#xff1a;从公式推导到MATLAB仿真 在新能源发电系统中&#xff0c;离网逆变器的稳定运行至关重要。传统电压电流双闭环控制虽然简单直接&#xff0c;但在面对复杂负载变化时&#xff0c;往往会出现电压跌落、频率失稳等问题。下垂控制技术通过模拟同…...

突破远程桌面限制:RDP Wrapper实现多用户并发连接的创新解决方案

突破远程桌面限制&#xff1a;RDP Wrapper实现多用户并发连接的创新解决方案 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 副标题&#xff1a;适用于Windows Vista至Windows 11全版本的远程桌面功能扩展工具 在…...

OpenClaw多模态探索:Qwen3-32B+RTX4090D镜像截图转报告实践

OpenClaw多模态探索&#xff1a;Qwen3-32BRTX4090D镜像截图转报告实践 1. 为什么选择这个技术组合 上周团队头脑风暴时&#xff0c;我遇到了一个典型痛点&#xff1a;会议室白板上写满了讨论要点&#xff0c;但拍照后整理成电子版纪要需要手动誊写半小时。作为技术负责人&…...

python-flask-djangol框架的食品仓库管理系统

目录需求分析与功能规划技术栈选择系统架构设计开发与测试流程安全与性能优化部署方案项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作需求分析与功能规划 明确食品仓库管理系统的核心需求&#xff0c;包括库存管理、食品分类、…...

LangGPT结构化提示词框架:重新定义AI交互的核心方法

LangGPT结构化提示词框架&#xff1a;重新定义AI交互的核心方法 【免费下载链接】LangGPT LangGPT: Empowering everyone to become a prompt expert!&#x1f680; Structured Prompt&#xff0c;Language of GPT, 结构化提示词&#xff0c;结构化Prompt 项目地址: https://…...