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

蓝桥杯每日一题(BFS)

1562 微博转发

开始思路错误点:在用拉链法保存关注信息的时候,因为要看一个用户发的有多少转发的,所以要以用户为坑位,所有关注这个坑位的用户为链表。(开始弄反了)

e数组存某个用户的idx,ne是某个节点在链表上的下一个,h是坑位。

st状态数组的参数是用户,而不是idx

#include<bits/stdc++.h>
using namespace std;
//1562 微博转发
const int N=1e3+10;
int n,l;
//拉链法存储
int e[N],idx,ne[N],h[N];
bool st[N];
//e某个idx对应的用户是谁
//ne 这个用户和其他人是否被i同时关注
//h代表某个用户的关注列表的链表尾部
void add(int u,int x)
{// 把某个被关注的用户加入到某个用户的链表中e[idx]=x,ne[idx]=h[u],h[u]=idx++;
}int bfs(int s)//找某个节点的第l层关注的用户个数
{//之前都是只要有后继就加入到队列中//如何实现到规定的层的位置就终止呢//就是L层循环:每次循环都控制向外延伸一层memset(st,0,sizeof(st));queue<int>q;q.push(s);st[s]=1;int res=0;//前l层有多少个点for(int i=1;i<=l;i++)//向前走l层{int num=q.size();//num就是上一次循环扩展出来的点while(num--){int t=q.front();q.pop();for(int j=h[t];j!=-1;j=ne[j]){if(!st[e[j]]){q.push(e[j]);res++;st[e[j]]=1;}}}}return res;}
int main()
{cin>>n>>l;memset(h,-1,sizeof(h));for(int i=1;i<=n;i++){int x;cin>>x;while(x--){int u;cin>>u;add(u,i);//i关注了u}}int qu;cin>>qu;while(qu--){int user;cin>>user;cout<<bfs(user)<<endl;}}

//844走迷宫

自己是用pair并且second放走的步数,内存超限了。

下面是自己的做法

#include<bits/stdc++.h>
using namespace std;
//844走迷宫
typedef pair<int,int>PII;
typedef pair<PII,int> PIII;
const int N=100;
int p[N][N];
int n,m;
int s[4]={0,1,0,-1};
int z[4]={1,0,-1,0};
int dfs()
{queue<PIII>q;q.push({{1,1},0});while(!q.empty()){PIII t=q.front();q.pop();PII zuo=t.first;int x=zuo.first;int y=zuo.second;for(int i=0;i<4;i++){if(x+z[i]>=1&&x+z[i]<=n&&y+s[i]>=1&&y+s[i]<=m&&!p[x+z[i]][y+s[i]]){q.push({{x+z[i],y+s[i]},t.second+1});if(x+z[i]==n&&y+s[i]==m){//cout<<t.second+1<<endl;return t.second+1;}}}}}
int main()
{cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){int num;cin>>num;if(num)p[i][j]=1;}}cout<< dfs();
}

y做法:直接使用一个二维数组存某个坐标到达的时候走的步数。

845 八数码 

在bfs求最短路的问题中,重点是怎么保存状态,y的做法:把矩阵转化为字符串,从初始位置到这个状态走的距离就是变化的次数

太巧妙了;

//看完y思路之后,最后怎么都是输出不对,最后找到是swap(还原的那个swap)应该也在if条件中,就是在4层的for循环中不一定都符合不越界的要求。

#include<bits/stdc++.h>
using namespace std;
//845 八数码
//既可以存状态,又可以存步数
unordered_map<string ,int>d;//记录到这个状态转换了多少次
queue<string>q;//所有的状态
string start="12345678x";
int ss[4]={-1, 0, 1, 0},z[4]={0, 1, 0, -1};
int bfs(string s)
{q.push(s);d[s]=0;while(q.size()){string t=q.front();q.pop();int p=t.find('x');int y=p/3;int x=p%3;int dis=d[t];if(t==start)return d[t];for(int i=0;i<4;i++){//  cout<<" ********"<<endl;int xx=x+z[i];int yy=y+ss[i];//cout<<xx<<" "<<yy<<" "<<"si::"<<ss[i]<<endl;if(xx>=0&&xx<3&&yy>=0&&yy<3){swap(t[p],t[yy*3+xx]);//cout<<"yun"<<endl;if(!d.count(t)){d[t]=dis+1;q.push(t);}swap(t[p],t[yy*3+xx]);}//if(t==start)return d[t];}}return -1;
}int main()
{string s;for(int i=0;i<9;i++){string c;cin>>c;s+=c;}//cout<<s<<endl;cout<<bfs(s)<<endl;}

//1233全球变暖

自己做的WA,先用 bfs看有几个岛屿,淹没操作后,再用bfs看。

#include<bits/stdc++.h>
using namespace std;
//1233 全球变暖
typedef pair<int,int>PII;
const int N=1010;
int n;
int p[N][N],f[N][N];
int st[N][N];
int s[4]={1,0,0,-1},z[4]={0,1,-1,0};
int bfs()
{int cnt=0;memset(st,0,sizeof(st));queue<PII>q;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(!st[i][j]&&p[i][j])//没有被访问过的一片陆地{//  cout<<"find that match if"<<endl;st[i][j]=1;cnt++;//cout<<"cnt "<<cnt<<endl;q.push({i,j});while(q.size()){PII t=q.front();//cout<<q.front().first<<" "<<q.front().second<<endl;q.pop();for(int k=0;k<4;k++){int x=t.first+s[k];int y=t.second+z[k];if(x>=1&&x<=n&&y>=1&&y<=n&&p[x][y]&&!st[x][y]){q.push({x,y});st[x][y]=1;}}}}}}return cnt;
}int main()
{cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){char c;cin>>c;if(c=='#')p[i][j]=1,f[i][j]=1;}}//查看有几个岛屿int precnt=bfs();//淹没for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(!f[i][j])//如果本来是一个海域{for(int k=0;k<4;k++){//cout<<"dawn"<<endl;int x=i+s[k];int y=j+z[k];if(x>=1&&x<=n&&y>=1&&y<=n&&p[x][y]){p[x][y]=0;//被淹没}}}}}//还有几个岛屿int poscnt=bfs();int num=precnt-poscnt;cout<<num<<endl;}

y是在bfs的时候就在4的for循环中判断,这个连通块是否被淹没,是就加加。最后根据这个连通块的节点个数和被淹没的节点个数判断这个岛屿是否被淹没

相关文章:

蓝桥杯每日一题(BFS)

1562 微博转发 开始思路错误点&#xff1a;在用拉链法保存关注信息的时候&#xff0c;因为要看一个用户发的有多少转发的&#xff0c;所以要以用户为坑位&#xff0c;所有关注这个坑位的用户为链表。&#xff08;开始弄反了&#xff09; e数组存某个用户的idx&#xff0c;ne是…...

【C语言】linux内核pci_save_state

一、中文注释 //include\linux\pci.h /* 电源管理相关的例程 */ int pci_save_state(struct pci_dev *dev);//drivers\pci\pci.c /*** pci_save_state - 在挂起前保存PCI设备的配置空间* dev: - 我们正在处理的PCI设备*/ int pci_save_state(struct pci_dev *dev) {int i;/* X…...

轻松打造完美原型:9款在线工具推荐

早年&#xff0c;UI设计师选择的工具有限&#xff0c;功能相对单一&#xff0c;大多数在线原型设计工具都是国外的&#xff0c;语言和网络都增加了设计工作的负担。如今&#xff0c;国内外有许多在线原型设计工具&#xff0c;不仅可以在浏览器上使用&#xff0c;而且还具有团队…...

Vue3中Pinia状态管理库学习笔记

pinia的基本使用 <template><div><h2>Home View</h2> <h2>count:{{ counterStore.count }}</h2><h2>count:{{ count }}</h2><button click"increment">count1</button></div> </template>…...

共谋企业出海新篇章纷享销客荣获数字中国企业峰会“卓越成果奖”

3月9日&#xff0c;2024数字中国企业峰会在杭州西湖中维香溢大酒店成功举办&#xff0c;众多数字化领域专家、知名企业 CIO 代表到场。峰会旨在推动数字化转型与创新发展&#xff0c;为企业出海和国际合作搭建交流与合作的平台。本次峰会的颁奖环节&#xff0c;纷享销客凭借其卓…...

【MySQL】group_concat 函数和 locate 函数运用之找到每篇文章的主题

力扣题 1、题目地址 2199. 找到每篇文章的主题 2、模拟表 表&#xff1a;Keywords Column NameTypetopic_idintwordvarchar (topic_id, word) 是该表的主键&#xff08;具有唯一值的列的组合&#xff09;。该表的每一行都包含一个主题的 id 和一个用于表达该主题的词。可…...

RedisCluster集群中的插槽为什么是16384个?

RedisCluster集群中的插槽为什么是16384个&#xff1f; CRC16的算法原理。 1.根据CRC16的标准选择初值CRCIn的值2.将数据的第一个字节与CRCIn高8位异或3.判断最高位&#xff0c;若该位为0左移一位&#xff0c;若为1左移一位再与多项式Hex码异或4.重复3至9位全部移位计算结束5…...

一直出现问题,发现服务器磁盘空间已满导致,腾出服务器磁盘空间命令

要解决服务器磁盘空间已满的问题&#xff0c;你可以按照以下步骤操作&#xff1a; 查看磁盘使用情况&#xff1a;使用df -h&#xff0c; du -s -h ./*命令来查看服务器的磁盘空间使用情况。查找大文件&#xff1a;使用du -a | sort -rn | head -5命令来找出占用空间最大的前5个…...

吴恩达机器学习笔记 二十三 倾斜数据集的误差指标 精确率 召回率 精确率与召回率的平衡 F1分数

如果数据集的正例和反例的比例非常倾斜&#xff0c;常用的错误指标如 准确率(accuracy) 并不好用。此时可以用精确率和召回率。 精确率&#xff08;precision&#xff09;&#xff1a;真阳的样本数/预测为阳的样本数真阳数/&#xff08;真阳假阳&#xff09; 召回率(recall):…...

无人游艇的研发和开发对于多个领域具有重要

无人游艇的研发和开发对于多个领域具有重要性。 首先&#xff0c;无人游艇可以在海上进行各种任务&#xff0c;如海洋科学研究、资源勘探和监测、海洋环境保护等。相比传统的人工操作船只&#xff0c;无人游艇可以长时间在海上工作&#xff0c;可以自动化执行任务&#xff0c;…...

在AI创业热潮下,如何抓住AI赚钱机会,实现人生逆袭

随着人工智能技术的迅猛发展,AI创业热潮正席卷全球。这不仅为科技领域的专业人士提供了无限的商机,也为普通人开辟了全新的赚钱途径。本文将为您揭示在AI创业热潮下,普通人如何抓住AI赚钱机会,实现人生逆袭,同时探讨哪些行业适合应用AI技术。 一、普通人如何抓住AI赚钱机…...

JETSON 配置并跑通 NanoDet

JETSON 配置 NanoDet 文章目录 JETSON 配置 NanoDetNanoDet 介绍源码环境搭建及测试配置 NanoDet 的环境环境配置过程中遇到的问题&#xff1a;环境配置完毕验证 NanoDet NanoDet 介绍 可以参考这个博客&#xff1a;NanoDet&#xff1a;这是个小于4M超轻量目标检测模型 源码 …...

突破编程_C++_C++11新特性(unordered_multimap)

1 概述 std::unordered_multimap 是一个哈希表实现的无序容器&#xff0c;它存储的元素是键值对&#xff0c;并且允许键的重复。这意味着同一个键可以关联多个值。在 std::unordered_multimap 中&#xff0c;元素的插入顺序是不确定的&#xff0c;并且不会因为元素的插入、删除…...

15.WEB渗透测试--Kali Linux(三)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;14.WEB渗透测试--Kali Linux&#xff08;二&#xff09;-CSDN博客 Kali工具使用 3389远…...

Android-Framework pm list packages和pm install返回指定应用信息

一、环境 高通 Android 13 注&#xff1a;Android10 和Android13有些差异&#xff0c;代码位置不变&#xff0c;参照修改即可 二、pm简单介绍 pm工具为包管理&#xff08;package manager&#xff09;的简称 可以使用pm工具来执行应用的安装和查询应用宝的信息、系统权限、…...

CSS

什么是CSS&#xff1f; CSS是一门语言&#xff0c;用于控制网页表现 CSS&#xff08;Cascading Style Sheet&#xff09;&#xff1a;层叠样式表 W3C标准&#xff1a;网页主要由三部分组成 结构&#xff1a;HTML表现&#xff1a;CSS行为&#xff1a;JavaScript CSS导入方式…...

算法详解——选择排序和冒泡排序

一、选择排序 选择排序算法的执行过程是这样的&#xff1a;首先&#xff0c;算法遍历整个列表以确定最小的元素&#xff0c;接着&#xff0c;这个最小的元素被置换到列表的开头&#xff0c;确保它被放置在其应有的有序位置上。接下来&#xff0c;从列表的第二个元素开始&#x…...

图论(蓝桥杯 C++ 题目 代码 注解)

目录 迪杰斯特拉模板&#xff08;用来求一个点出发到其它点的最短距离&#xff09;&#xff1a; 克鲁斯卡尔模板&#xff08;用来求最小生成树&#xff09;&#xff1a; 题目一&#xff08;蓝桥王国&#xff09;&#xff1a; 题目二&#xff08;随机数据下的最短路径&#…...

矩阵起源新一年喜报连连!

新春伊始 矩阵起源向大家分享 一连串好消息 首先&#xff0c;公司创始人兼CEO王龙先生获评“2023深圳创新突出贡献人物“。这一荣誉是对其在推动数据库行业技术创新和产品开发方面所做出的卓越贡献的认可。他的领导力和创新精神不仅引领我司取得了显著的成就&#xff0c;也为…...

牛客——紫魔法师(并查集)

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 “サーヴァント、キャスター、Medea。”--紫魔法师 给出一棵仙人掌(每条边最多被包含于一个环&#xff0c;无自环&#xff0c;无重边&#xff0c;保证连通)&#xff0c;要求用最少的…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...