Acwing2024蓝桥杯BFS
AcWing 1355. 母亲的牛奶
bfs:
#include<iostream>
#include<queue>
using namespace std;
const int N=21;
int A,B,C;
bool flag[N][N][N];
struct node{int a,b,c;
};
queue<node>q;
void check(int a,int b,int c){if(!flag[a][b][c]){q.push({a,b,c});flag[a][b][c]=1;}
}
void bfs(){q.push({0,0,C});flag[0][0][C]=1;while(!q.empty()){auto t=q.front();q.pop();int a=t.a,b=t.b,c=t.c;check(a-min(a,B-b),min(a+b,B),c);check(a-min(a,C-c),b,min(a+c,C));check(min(a+b,A),b-min(b,A-a),c);check(a,b-min(b,C-c),min(c+b,C));check(min(a+c,A),b,c-min(c,A-a));check(a,min(b+c,B),c-min(c,B-b));}return ;
}
int main(){cin>>A>>B>>C;bfs();for(int c=0;c<=C;c++){for(int b=0;b<=B;b++){if(flag[0][b][c]){cout<<c<<" ";break;}}}return 0;
}
dfs:
#include<iostream>
using namespace std;
const int N=21;
int A,B,C;
bool flag[N][N][N];
void dfs(int a,int b,int c){if(flag[a][b][c]) return;flag[a][b][c]=1;dfs(a-min(a,B-b),min(a+b,B),c);dfs(a-min(a,C-c),b,min(a+c,C));dfs(min(a+b,A),b-min(b,A-a),c);dfs(a,b-min(b,C-c),min(c+b,C));dfs(min(a+c,A),b,c-min(c,A-a));dfs(a,min(b+c,B),c-min(c,B-b));return ;
}
int main(){cin>>A>>B>>C;dfs(0,0,C);for(int c=0;c<=C;c++){for(int b=0;b<=B;b++){if(flag[0][b][c]){cout<<c<<" ";break;}}}return 0;
}
AcWing 844. 走迷宫
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
const int N=110;
int n,m;
typedef pair<int,int>pii;
int mapp[N][N],d[N][N];
int bfs(){memset(d,-1,sizeof d);d[1][1]=0;queue<pii>q;q.push({1,1});int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};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(x>=1&&x<=n&&y>=1&&y<=m&&d[x][y]==-1&&mapp[x][y]==0){d[x][y]=d[t.first][t.second]+1;q.push({x,y});}}}return d[n][m];
}
int main(){cin>>n>>m;for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>mapp[i][j];cout<<bfs()<<endl;return 0;
}
AcWing 845. 八数码
STL:unordered_map+bfs:
#include<iostream>
#include<unordered_map>
#include<queue>
using namespace std;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int bfs(string startt){string last="12345678x";//目标转态queue<string>q;//将字符串和数字联系在一起,字符串表示状态,数字表示距离unordered_map<string,int>d;//初始化q.push({startt});d[startt]=0;while(!q.empty()){auto t=q.front();//记录转态q.pop();int dist=d[t];//记录距离if(t==last) return dist;///终止状态//查找x在字符串中的下标,后转换为在矩阵中的坐标int k=t.find('x');int x=k/3,y=k%3;for(int i=0;i<4;i++){int xx=x+dx[i],yy=y+dy[i];if(xx>=0&&xx<3&&yy>=0&&yy<3){swap(t[k],t[xx*3+yy]);//交换,得到下一种状态if(!d.count(t)){//如果当前状态是第一次遍历,记录距离,入队d[t]=dist+1;q.push({t});}swap(t[k],t[xx*3+yy]);//还原状态}}}return -1;
}
int main(){string s;for(int i=0;i<9;i++){char ch;cin>>ch;s+=ch;}cout<<bfs(s)<<endl;return 0;
}
AcWing 1233. 全球变暖(第九届省赛)
这题在这篇文章里有具体写:
三.搜索与图论(未完结)-CSDN博客
#include<iostream>
using namespace std;
const int N=1005;
char a[N][N],b[N][N];
int n,res,ans;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
void dfs_all(int x,int y){b[x][y]='.';if(b[x-1][y]=='.'&&x-1>=0&&x-1<n&&y>=0&&y<n){if(b[x][y+1]=='.'&&x>=0&&x<n&&y+1>=0&&y+1<n){if(b[x+1][y]=='.'&&x+1>=0&&x+1<n&&y>=0&&y<n){if(b[x][y-1]=='.'&&x>=0&&x<n&&y-1>=0&&y-1<n){return ;}}}}for(int i=0;i<4;i++){int xx=x+dx[i],yy=y+dy[i];if(b[xx][yy]=='#'){dfs_all(xx,yy);}}
}
void dfs_rest(int x,int y){a[x][y]='.';if(a[x-1][y]=='.'&&x-1>=0&&x-1<n&&y>=0&&y<n){if(a[x][y+1]=='.'&&x>=0&&x<n&&y+1>=0&&y+1<n){if(a[x+1][y]=='.'&&x+1>=0&&x+1<n&&y>=0&&y<n){if(a[x][y-1]=='.'&&x>=0&&x<n&&y-1>=0&&y-1<n){return ;}}}}for(int i=0;i<4;i++){int xx=x+dx[i],yy=y+dy[i];if(a[xx][yy]=='*'||a[xx][yy]=='#'){dfs_rest(xx,yy);}}
}
int main(){cin>>n;for(int i=0;i<n;i++) for(int j=0;j<n;j++) {cin>>a[i][j];b[i][j]=a[i][j];}for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(b[i][j]=='#') {dfs_all(i,j);res++;}for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(a[i][j]=='.'){for(int k=0;k<4;k++){int x=i+dx[k],y=j+dy[k];if(a[x][y]=='#') a[x][y]='*';}}}}for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(a[i][j]=='#') {dfs_rest(i,j);ans++;}cout<<res-ans<<endl;return 0;
}相关文章:
Acwing2024蓝桥杯BFS
AcWing 1355. 母亲的牛奶 bfs: #include<iostream> #include<queue> using namespace std; const int N21; int A,B,C; bool flag[N][N][N]; struct node{int a,b,c; }; queue<node>q; void check(int a,int b,int c){if(!flag[a][b][c]){q.push({a,b,c})…...
vue打包报错:CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
前言: vue项目,打包报错:CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 报错现象: 报错原因: 这个错误是由Node.js在尝试分配内存时因为系统的可用内存不足而发生的。"JavaScript heap…...
计算机组成原理网课笔记
无符号整数的表示与运算 带符号整数的表示与运算 原反补码的特性对比 移码 定点小数...
Python学习第四部分 函数式编程
文章目录 高阶函数lambda 表达式和匿名函数偏函数闭包map函数reduce函数filter 函数sorted函数 函数式编程主要学习:高阶函数、闭包closure、匿名函数、偏函数,map函数、reduce函数、filter函数、sorted函数 函数式编程是个很古老的概念,最古…...
数据结构-二叉树-AVL树(平衡二叉树)
红黑树是平衡二叉树的一个变种。 一、 产生平衡二叉树的原因。 二叉搜索树的问题在于极端场景下退化为类似链表的结构,所以搜索的时间复杂度就变成了O(N)。为了保证二叉树不退化为链表,我们必须保证二叉树的的平衡性。 二叉平衡搜索树就是解决上面的问…...
【Qt问题】windeployqt如何提取Qt依赖库
往期回顾 【Qt问题】Qt Creator 如何链接第三方库-CSDN博客 【Qt问题】Qt 如何带参数启动外部进程-CSDN博客 【Qt问题】VS2019 Qt win32项目如何添加x64编译方式-CSDN博客 【Qt问题】windeployqt如何提取Qt依赖库 考虑这个问题主要是:当我们的程序运行好之后&#…...
VS2019下使用MFC完成科技项目管理系统
背景: (一)实验目的 通过该实验,使学生掌握windows程序设计的基本方法。了解科技项目组织管理的主要内容和管理方面的基本常识,熟练应用数据库知识,通过处理过程对计算机软件系统工作原理的进一步理解&…...
【Android】Kotlin学习之数据容器(数组for循环遍历)
数组遍历 1. for ( item in arr){…} 2. for ( i in arr.indeces ) {…} (遍历下标) 3. for ((index, item) in arr.withInfex()) {…} (遍历下标和元素) 4. arr.forEach {} ( 遍历元素 ) 5. arr.forEachIndexed{index, item -> …}...
JavaWeb_请求响应_简单参数实体参数
一、SpringBoot方式接收携带简单参数的请求 简单参数:参数名与形参变量名相同,定义形参即可接收参数。并且在接收过程中,会进行自动的类型转换。 启动应用程序后,在postman中进行测试: 请求成功,响应回了O…...
windows端口复用
1. 概述 使用 HTTP.sys 中的 Net.tcp Port Sharing 服务,配合 WinRM 实现端口复用。 优点: HTTP.sys 为 windows 原生机制, WinRM 为 windows 自带功能,动作较小,不易触发主 动防御。 需要管理员权限。 2. 原理 (…...
[Redis] 使用布隆过滤器和分布式锁实现用户注册
布隆过滤器(Bloom Filter)是一种数据结构,用于快速判断一个元素是否可能存在于一个集合中。它通过使用多个哈希函数和一个位数组来表示一个集合,当一个元素被加入到集合时,通过哈希函数计算出多个哈希值,并…...
Okhttp 发送https请求,忽略ssl认证
工具类 import lombok.extern.slf4j.Slf4j;import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509Tru…...
IT项目管理-大题【太原理工大学】
一、根据进度网络写出时间参数表、关键路径、总工期 此类题一般是给一个表,问三问。 第一问会问某个活动的时间参数,但我们需要把整个表都求出来,否则单求一个很困难(如果你就是不想求整张表也行,不是硬性要求…...
【代码随想录】day48
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、198打家劫舍二、213打家劫舍II三、337打家劫舍III 一、198打家劫舍 class Solution { public:int rob(vector<int>& nums) {vector<int> dp(n…...
【补充】1-auth的使用、扩写auth的user表、django支持缓存
1 Auth的使用 1.1 扩写auth的user表 2 缓存 1 Auth的使用 # django 的一个app---》用户的登录,退出,注册。。。# 配置文件中配置:---》表会被迁移INSTALLED_APPS [django.contrib.auth,]# auth有哪些表---权限控制:-Permission&a…...
力扣-21. 合并两个有序链表-js实现
/*** Definition for singly-linked list.* function ListNode(val, next) {* this.val (valundefined ? 0 : val)* this.next (nextundefined ? null : next)* }*/ /*** param {ListNode} list1* param {ListNode} list2* return {ListNode}*/ const mergeTwoList…...
tensorflow报错
参考 TensorFlow binary is optimized to use available CPU instructions in performance-critical operations._this tensorflow binary is optimized to use availab-CSDN博客 解决Python中cuBLAS插件无法注册问题_unable to register cudnn factory: attempting to re-CS…...
企业数字化转型走向平台化运营会经历哪些阶段?
蚓链实践总结企业数字化转型走向平台化运营通常会经历以下几个阶段: 1. 规划与准备阶段:明确转型目标和战略,评估现有业务和技术状况,制定转型计划。 2. 基础建设阶段:搭建数字化基础设施,包括云平台、数…...
最新AI实景自动无人直播软件教你实现24小时不下播带货;智能化引领直播新时代
随着互联网的快速发展,直播行业已经成为商家品牌推广和商品销售的热门方式。而如今,一款令人惊叹的AI实景自动无人直播软件正在让直播变得更加智能化和便捷化,为商家带来全新的直播体验。 AI实景自动无人直播软件的一大优势是其智能讲解功能。…...
《二十一》QT QML编程基础
QML概述 QML(Qt Meta-Object Language)是一种声明性语言,它被用于描述Qt框架中用户界面的结构和行为。QML提供了一种简洁、灵活的方式来创建动态和交互式的界面。 QML基于JavaScript语法,通过使用QML类型和属性来定义界面的元素…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...
