蓝桥杯备赛 Day 19 加练dfs
是否需要回溯?
输入参数有哪几个(当前dfs和下一个dfs什么会变?)?
是否需要返回值?
一.1158: 八皇后
P1158 - 八皇后 - New Online Judge (ecustacm.cn)
学习:
1.dfs输入为层数,即行号i,因为是每行只放一个,下一个dfs就是i+1
2.输出void,因为下一层无需返回上一层值
3.需要一开始判断递归返回条件,更新结果
代码:
#include <bits/stdc++.h>using namespace std;
const int N=15;
int a[N][N],cnt,n; //0未放置,1放置
vector<vector<int>> ans(3,vector<int>(n,0));//前3组解 //输入为横坐标i,无返回值
void dfs(int i){//i==n+1,得到一组解,返回寻找下一组if(i==n+1){//更新ansif(cnt<3){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(a[i][j]) ans[cnt].emplace_back(j);}} }//更新cntcnt++;} //遍历列for(int j=1;j<=n;j++){bool flag=true;//同一列有放置 for(int k=1;k<i;k++){if(a[k][j]){flag=false;break;}}if(!flag) continue;//左上方有放置for(int k=1;(i-k)>=1 && (j-k)>=1;k++){if(a[i-k][j-k]){flag=false;break;}}if(!flag) continue;//右上方有放置for(int k=1;(i-k)>=1 && (j+k)<=n;k++){if(a[i-k][j+k]){flag=false;break;}}if(!flag) continue; //当前位置能够放置,更新a,dfs(i+1),恢复aa[i][j]=1;dfs(i+1);a[i][j]=0; } //返回return;
}int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n;//从第1行开始dfs(1); //输出答案for(int i=0;i<3;i++){for(int j=0;j<n;j++){cout<<ans[i][j]<<" ";}cout<<"\n";} cout<<cnt;return 0;
}
二.3472 八皇后
3472. 八皇后 - AcWing题库
学习:
1.dfs思想同上一题一样
2.此题多了记录所有答案,且通过id快速访问某个答案,即数组的优点,内部元素是一个串,即string类型,开:
vector<string> ans;//解
升序排序即可(字典序)
代码:
#include <bits/stdc++.h>using namespace std;
const int N=15;
int a[N][N],n=8,m; //0未放置,1放置
vector<string> ans;//解 //输入为横坐标i,无返回值
void dfs(int i){//i==n+1,得到一组解,返回寻找下一组if(i==n+1){//更新ansstring s="";for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(a[i][j]) s+=to_string(j);}} ans.emplace_back(s);} //遍历列for(int j=1;j<=n;j++){bool flag=true;//同一列有放置 for(int k=1;k<i;k++){if(a[k][j]){flag=false;break;}}if(!flag) continue;//左上方有放置for(int k=1;(i-k)>=1 && (j-k)>=1;k++){if(a[i-k][j-k]){flag=false;break;}}if(!flag) continue;//右上方有放置for(int k=1;(i-k)>=1 && (j+k)<=n;k++){if(a[i-k][j+k]){flag=false;break;}}if(!flag) continue; //当前位置能够放置,更新a,dfs(i+1),恢复aa[i][j]=1;dfs(i+1);a[i][j]=0; } //返回return;
}int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);//从第1行开始dfs(1); //升序 sort(ans.begin(),ans.end());cin>>m;//输出答案while(m--){int b;cin>>b;cout<<ans[b-1]<<endl;}return 0;
}
三.P1605 迷宫
P1605 迷宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
学习:
1.经典图像dfs
2.记得起点更新a数组
a[sx][sy]=-1;
3.不需要以下代码:
//不能加下面一个,因为在dfs前会a[nx][ny]=-1,所以下面这个代码会直接return
//当前位置访问过或障碍物,return
//if(a[x][y]!=0) return;
代码:
#include <bits/stdc++.h>using namespace std;
typedef long long ll;
int a[10][10]; //-1:访问,0:未访问,1:障碍物
int n,m,t,sx,sy,ex,ey;
int dx[]={1,-1,0,0},dy[]={0,0,1,-1};
ll ans;bool inMap(int x,int y){return 1<=x && x<=n && 1<=y && y<=m;
} //输入参数坐标x,y,无返回值
void dfs(int x,int y){//结束if(x==ex && y==ey){ans++;return;} //不能加下面一个,因为在dfs前会a[nx][ny]=-1,所以下面这个代码会直接return //当前位置访问过或障碍物,return//if(a[x][y]!=0) return; //访问下一个位置for(int i=0;i<4;i++){int nx=x+dx[i],ny=y+dy[i];if(!inMap(nx,ny)) continue;//访问过或障碍物,跳过if(a[nx][ny]!=0) continue;//访问新位置a[nx][ny]=-1;dfs(nx,ny);//回溯恢复a[nx][ny]=0; } //返回return; }int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n>>m>>t;cin>>sx>>sy>>ex>>ey;while(t--){int tx,ty;cin>>tx>>ty;a[tx][ty]=1;}//dfsa[sx][sy]=-1;dfs(sx,sy); cout<<ans;return 0;
}
四.P1434 [SHOI2002] 滑雪
学习:
1.用到记忆化,为什么要用到?
原因:
(1)遍历nxm的dfs:
//dfs
for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(!dp[i][j]){ans=max(ans,dfs(i,j));} }
}
(2)确定dfs返回类型:返回值为从当前位置滑的最长长度
(3)遍历(i,j)时会获得下游左边的滑的最长长度,因此可以记忆化储存,避免重复遍历
2.记忆化优化部分:
(1)dfs遍历优化:
if(!dp[i][j]){ans=max(ans,dfs(i,j));
}
(2)dfs内部提前return:
//如果已经算过当前位置滑的最长长度,直接返回
if(dp[x][y]) return dp[x][y];
3.dfs三步走:
(1)输入参数:
输入参数坐标x,y
(2)返回类型:
返回值为从当前位置滑的最长长度
int dfs(int x,int y){}
int cnt=1;
return cnt;
(3)递归条件:
隐式递归:不能往四周滑:返回cnt,不能往下滑cnt=1
4.注意:
(1)cnt初始化是1,不是0!!!
(2)更新cnt,取max操作,因为会往四周滑,不确定哪条最长
//能往下滑
if(a[x][y]>a[nx][ny]){//这边是max cnt=max(cnt,dfs(nx,ny)+1);
}
代码:
#include <bits/stdc++.h>using namespace std;
typedef long long ll;
int a[105][105]; //高度
int dp[105][105];//从当前位置滑的最长长度
int n,m;
int dx[]={1,-1,0,0},dy[]={0,0,1,-1};
int ans;bool inMap(int x,int y){return 1<=x && x<=n && 1<=y && y<=m;
} //输入参数坐标x,y,返回值为从当前位置滑的最长长度
int dfs(int x,int y){//如果已经算过当前位置滑的最长长度,直接返回if(dp[x][y]) return dp[x][y]; int cnt=1; for(int i=0;i<4;i++){int nx=x+dx[i],ny=y+dy[i];if(!inMap(nx,ny)) continue;//能往下滑 if(a[x][y]>a[nx][ny]){//这边是max cnt=max(cnt,dfs(nx,ny)+1);}} //返回cnt,不能往下滑cnt=0dp[x][y]=cnt; return cnt; }int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}//dfsfor(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(!dp[i][j]){ans=max(ans,dfs(i,j));} }} cout<<ans;return 0;
}
五.指数型枚举
92. 递归实现指数型枚举 - AcWing题库
学习:
1.取/不取,2^n
,不管顺序
输出案例://这是空行
3
2
2 3
1
1 3
1 2
1 2 3
2.跟8皇后一样,递归层数,即第i个数字
3.需要回溯
4.输出答案那边复杂些
5.思考为什么答案这个顺序输出,深刻理解递归!!!
6.注意:vector不是pop_back(i),是pop_back(),无参数
代码:
#include <bits/stdc++.h>using namespace std;
int n;
vector<int> ans;//输入参数第i个数,无返回值
void dfs(int i){//递归结束if(i==n+1){//输出结果if(!ans.empty()){for(auto &x:ans){cout<<x<<" ";} } cout<<"\n";return;} //不选dfs(i+1);//选 ans.emplace_back(i);dfs(i+1);ans.pop_back();
} int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n;dfs(1);return 0;
}
六.排列型枚举
94. 递归实现排列型枚举 - AcWing题库
学习:
1.输出样例
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
2.相比于上面的指数型,排列型更复杂一点,需要一个vis数组来判断这个数有没有放过
3.且dfs的参数i不是第i个数,而是放置的第i个位置(跟8皇后很像),需要遍历数字1-n,去判断有没有放过然后dfs(i+1)
4.需要回溯
5.注意:不要用visit,会有歧义,尽量用缩写vis
代码:
#include <bits/stdc++.h>using namespace std;
int n;
vector<int> ans;
int vis[10]; //某个数是否放过 //输入参数为排列答案的第i个次序,无返回值
void dfs(int i){//递归结束if(i==n+1){//输出结果for(auto &x:ans){cout<<x<<" ";} cout<<"\n";return;} //遍历1-nfor(int j=1;j<=n;j++){//j摆第i位if(!vis[j]){ans.push_back(j);vis[j]=1;dfs(i+1); ans.pop_back();vis[j]=0;} }
} int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n;dfs(1);return 0;
}
七.组合型枚举
93. 递归实现组合型枚举 - AcWing题库
学习:
1.输入样例:
5 3
即5个数排3个位置
输出样例:
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
(1)与排列型枚举不同的是,排列位置变成m,小于n,改个递归结束条件即可
(2)要求组合数字升序,对dfs加一个参数x,表示前i-1放的值x,遍历从1-n变成x+1-n即可
代码:
#include <bits/stdc++.h>using namespace std;
int n,m;
vector<int> ans;
int vis[10]; //某个数是否放过 //输入参数为排列答案的第i个次序,前i-1放的值x,无返回值
void dfs(int i,int x){//递归结束if(i==m+1){//输出结果for(auto &x:ans){cout<<x<<" ";} cout<<"\n";return;} //遍历x+1-nfor(int j=x+1;j<=n;j++){//j摆第i位if(!vis[j]){ans.push_back(j);vis[j]=1;dfs(i+1,j); ans.pop_back();vis[j]=0;} }
} int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n>>m;dfs(1,0);return 0;
}
八.油田 Oil Deposits
油田 Oil Deposits - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
学习:
1.连通块问题,因为要一个区域一个区域的判断,所以要对整个地图遍历进行dfs,通过一个vis数组判断是否访问过确保一个连通块只访问一次
2.因为这是多次输入,所以maze和vis开局部变量,要传入到dfs中,引用传递更快
代码:
#include <bits/stdc++.h>using namespace std;
typedef long long ll;
int n,m;
//横,竖,对角线
int dx[]={1,1,0,-1,-1,-1,0,1},dy[]={0,1,1,1,0,-1,-1,-1};bool inMap(int x,int y,const int &n,const int &m){return 1<=x && x<=n && 1<=y && y<=m;
}//无返回值,输入地图,坐标和结果
void dfs(vector<vector<char>> &maze,vector<vector<int>> &vis,int x,int y,const int &n,const int &m){//标记访问过vis[x][y]=1;//向四周访问for(int i=0;i<8;i++){int nx=x+dx[i],ny=y+dy[i];if(!inMap(nx,ny,n,m)) continue;//未访问过的油田继续搜索if(!vis[nx][ny] && maze[nx][ny]=='@'){dfs(maze,vis,nx,ny,n,m);} } }int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n>>m;while(n!=0 || m!=0){vector<vector<char>> maze(n+1,vector<char>(m+1,'0'));vector<vector<int>> vis(n+1,vector<int>(m+1,0)); //判断是否搜索过,0:未搜索过,1:搜索过 for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>maze[i][j];}}ll ans=0;//搜索油田区域 for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){//未搜索过的油田搜索 if(!vis[i][j] && maze[i][j]=='@'){dfs(maze,vis,i,j,n,m);ans++;}}}cout<<ans<<endl;cin>>n>>m; }return 0;
}
九.P1019 [NOIP2000 提高组] 单词接龙
P1019 [NOIP2000 提高组] 单词接龙 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
学习:
1.dfs是简单的,就是回溯
2.难点在于dfs参数传什么,怎么寻找拼接位置
3.每次搜索完更新了总的拼接字符串,答案也求总的拼接字符串的最大长度,故dfs传入参数就是当前总的拼接字符串,直接用max更新ans即可,难点就在于怎么寻找拼接位置
4.利用substr寻找拼接位置:
substr(i,j):获取子字符串[i,j)
substr(i):获取子字符串[i,最后)
//寻找下一个拼接的字符串for(int i=1;i<=n;i++){if(vis[i]>=2) continue;//获取拼接位置,j从1开始,后面min保证两个字符串不存在包含关系for(int j=1;j<min( (int)str.size(),(int)s[i].size() );j++){//最难的部分,str:[str.size()-j,最后),s[i]:[0,j) if(str.substr(str.size()-j)==s[i].substr(0,j)){vis[i]++;//拼接:s[i]:[j,最后) dfs(str+s[i].substr(j));vis[i]--;} } }
十.821. 跳台阶
821. 跳台阶 - AcWing题库
学习:
1.可以用动态规划
2.可以暴力dfs
3.可以记忆化
代码:
1.暴力:
#include <bits/stdc++.h>using namespace std;
typedef long long ll;
int n;
ll ans;//输入第i级台阶,无返回值,无需回溯
void dfs(int i){//递归结束if(i>n) return;if(i==n){ans++;} //走1级dfs(i+1);//走2级 dfs(i+2);
} int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n;dfs(0);cout<<ans;return 0;
}
2.记忆化
#include <bits/stdc++.h>using namespace std;
typedef long long ll;
int n;
ll ans;
ll dp[20];//输入第i级台阶,返回当前台阶到第n级的方案,无需回溯
ll dfs(int i){//剪枝if(dp[i]) return dp[i]; //递归结束if(i>n) return 0;if(i==n) return dp[i]=1;ll cnt=0;//走1级或2级 cnt=dfs(i+1)+dfs(i+2);return dp[i]=cnt;
} int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n;cout<<dfs(0);return 0;
}
十一.P1036 [NOIP 2002 普及组] 选数
P1036 [NOIP 2002 普及组] 选数 - 洛谷
学习:
1.组合型枚举
2.这题题意有些不清楚,要求:计算出和为素数共有多少种,但是同一个素数是算多次,而不是算一次,不用set判断
代码:
//组合型枚举
#include <bits/stdc++.h>using namespace std;
const int N=25;
int a[N];
int n,k;
set<int> flag;
int ans;bool isZhi(int x){//<=1肯定不是if(x<=1) return false;else if(x==2) return true;else{for(int i=2;i<=sqrt(x);i++){if(x%i==0) return false;}return true;}
}//无返回值,输入为当前选第i个数, 第i-1个数选的是第j个数,前i-1个数的和
void dfs(int i,int j,int cnt){//递归结束if(i==k){if(isZhi(cnt)){ ans++; }return;} //如果k-i>n-(j+1)+1=n-j,则选不够if(k-i>n-j) return; //选j+1-nfor(int x=j+1;x<=n;x++){dfs(i+1,x,cnt+a[x]);}
}int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n>>k;for(int i=1;i<=n;i++) cin>>a[i];for(int t=1;t<=n-k+1;t++){dfs(1,t,a[t]);}cout<<ans;return 0;
}
十二.P2089 烤鸡
P2089 烤鸡 - 洛谷
学习:
1.排列型枚举,但是层数是10,每层有3种选择,需要剪枝
2.注意这里的N最大值不是n的最大值,而是方案的最大值,尽可能开大点,不然最后两个测试点过不去
代码:
//排列型枚举
#include <bits/stdc++.h>using namespace std;
const int N=100000;
int a[N][10],b[10];
int n,ans;//输入为第i个调味料,当前总质量之和,无返回值,无需回溯
void dfs(int i,int cnt){//剪枝 if(cnt>n) return;//不能有0 if(cnt+10-i>n) return;//递归结束if(i==10){if(cnt==n){for(int j=0;j<10;j++){a[ans][j]=b[j];}ans++;}return;} //搜索for(int j=1;j<=3;j++){b[i]=j;dfs(i+1,cnt+j);}
} int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n;dfs(0,0);if(ans==0) cout<<0;else{cout<<ans<<"\n";for(int i=0;i<ans;i++){for(int j=0;j<10;j++){cout<<a[i][j]<<" ";}cout<<"\n";}}return 0;
}
十三.P1088 [NOIP 2004 普及组] 火星人
P1088 [NOIP 2004 普及组] 火星人 - 洛谷
学习:
1.排列型枚举,O(N!),N太大会超时
2.调用算法库函数next_permutation
,它接受一个范围(通常是数组的起始和结束迭代器),并将范围内的元素重新排列为下一个字典序更大的排列,然后重新排列m次即可
代码:
#include <bits/stdc++.h>
using namespace std;
int a[100000];
int n,m;int main()
{ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=n;++i) cin>>a[i];for(int i=1;i<=m;++i) next_permutation(a+1,a+n+1);for(int i=1;i<=n;++i) cout<<a[i]<<" ";return 0;
}
相关文章:
蓝桥杯备赛 Day 19 加练dfs
是否需要回溯? 输入参数有哪几个(当前dfs和下一个dfs什么会变?)? 是否需要返回值? 一.1158: 八皇后 P1158 - 八皇后 - New Online Judge (ecustacm.cn) 学习: 1.dfs输入为层数,即行号i,因为是每行只放一个,下一个dfs就是i1 2…...
蓝桥杯-卡java排序
问题描述 本题是一道针对 Java 中 Arrays.sort 的题目,因此只有一个数据,该数据可以把 int 类型的数组在使用 Arrays.sort 后卡成 O(n2)O(n2)。 给定一个有 nn 个正整数的序列 aa,你需要将其升序排序后输出。 输入格式 第一行输入一个正整…...
内存管理模块
在 Linux 内核中,内存管理是一个复杂而关键的组成部分。内核空间的虚拟地址被划分为多个区域,每个区域有其特定的用途和映射机制。本文将详细介绍 直接映射区(Direct Mapping Area)、vmalloc 区、永久内核映射区(Perma…...
Spring RestTemplate修仙指南:从HTTP萌新到请求大能的终极奥义
各位在Spring生态摸爬滚打的道友们!今天要解锁的是Spring官方御用HTTP法宝——RestTemplate!这货堪称Java界的"御剑飞行术",虽然官方已推荐WebClient接棒,但江湖上仍有80%项目在用这员老将!准备好一键起飞了…...
cpp经典数论问题
题目如下 思路 代码如下...
Redis 线程模型:单线程也能快如闪电?
目录 一、核心思想:快刀斩乱麻的“单线程”高手 🦸♂️二、为什么是“单线程”?🤔三、单线程如何做到高性能?✨ “I/O 多路复用”是关键!四、真的一直都只有“一个线程”吗?并不完全是&#x…...
游戏引擎学习第208天
运行游戏并回顾我们的情况 今天,我们将继续完成之前中断的调试输出工作。最近的工作偏离了一些,展示了如何进行元编程的实践,主要涉及了一个小的解析器。尽管这个解析器本身是一个玩具,但它展示了如何完成一个完整的循环…...
JavaScript箭头函数介绍(=>)(箭头函数不绑定自己的this,而是继承上下文的this;不能用于造函数)JavaScript =>
文章目录 JavaScript箭头函数全解析箭头函数的基本语法简洁语法特性隐式返回值对象字面量返回 词法绑定的this不适用箭头函数的场景对象方法构造函数DOM事件处理 高级用法在数组方法中的应用链式调用柯里化函数 性能考量1. 作为回调函数时减少创建闭包的开销2. 简化代码结构&am…...
数据对象:DTO、DO、PO和 BO的区别和关系
在Java开发中,DTO(Data Transfer Object)、DO(Domain Object)、PO(Persistent Object)和BO(Business Object)是常用的数据对象概念,下面为你详细介绍并给出简…...
Java内存模型详解:堆、栈、方法区
1. 堆(Heap) 作用:存放所有对象实例及数组,是垃圾回收的主要区域。 结构: 新生代(Young Generation): Eden区:新创建的对象首先分配在此。 Survivor区(From…...
ubuntu 20.04 编译运行LeGo_LOAM 跑数据集 并且保存pcl文件
1.搭建文件目录,clone代码,编译 mkdir -p Lego_LOAM/src cd Lego_LOAM/src git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git cd .. catkin_make -j1 错误1:: fatal error: opencv/cv.h: 没有那个文件或目录 13 | #include <opencv/cv.h…...
CMake使用教程
CMake是开源、跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件可以直接拿到其它平台上使用,无需修改,非常方便。 使用命令行执行CMakeLists.txt,对文件进…...
快速上手Linux进程管理
一.理解进程和线程 1.1 什么是进程 它表示一个正在执行的程序实例。在操作系统中,进程是系统进行资源分配和调度的基本单位。每个进程都有自己独立的内存空间、代码、数据和系统资源,如打开的文件、使用的硬件设备等。 进程的主要特点包括:…...
pytorch框架实现cnn四种天气图片多分类问题-添加dropout和bn层
目录 1.导包 2.加载数据、拼接训练、测试文件夹 3. 查看当前目录下的所有文件名,以列表的形式输出 4.原数据集dataset中存在的数据的目标类别 5.创建train和test目录 及其需要分类的子文件夹 6.使用torchvision 的transforms进行数据预处理 6.1数据统一缩放resize、To…...
swift-11-init、deinit、可选链、协议、元类型
一、required 二、属性观察器 三、可失败初始化器 可以用init!定义隐式解包的可失败初始化器 可失败初始化器可以调用非可失败初始化器,非可失败初始化器调用可失败初始化器需要进行解包 如果初始化器调用一个可失败初始化器导致初始化失败 ,那么整个初…...
【力扣hot100题】(062)搜索插入位置
感觉自己对二分法还是没有很好掌握,主要在于边界问题,只会基本的搜索,如果要搜索比目标值大的第一个索引或者比目标值小的最后一个索引(或者换一些花里胡哨的题目)就完全不会了。 class Solution { public:int search…...
TCPIP详解 卷1协议 三 链路层
3.1——以太网和IEEE802局域网/城域网标准 以太网这个术语通常指一套标准,由DEC,Intel公司和Xerox公司在1980年首次发布,并在1982年加以修订。第一个常见格式的以太网,目前被称为10Mb/s以太网或共享以太网。它被IEEE采纳为802.3标…...
以太网安全
前言: 端口隔离可实现同一VLAN内端口之间的隔离。用户只需要将端口加入到隔离组中,就可以实现隔离组内端口之间的二层数据的隔离端口安全是一种在交换机接入层实施的安全机制,旨在通过控制端口的MAC地址学习行为,确保仅授权设备能…...
linux如何查看当前系统的资源占用情况
在 Linux 系统中,有多个命令可以查看当前系统的资源占用情况。以下是一些常用的命令及其说明: 1. 查看内存使用情况:free free -h-h 参数表示以人类可读的格式显示(如 MB, GB)。输出示例: to…...
人脸识别系统(人脸识别、前后端交互、Python项目)
基于Flask、Face_Recognition的人脸识别系统 项目介绍 基于flask、face_recognition的人脸识别系统。 本项目采用Face_Recognition库内置的ResNet-34预训练模型,其已对LFW公开数据集进行预训练而得到的模型。利用ResNet-34预训练模型,可使用少量已知人…...
2025 ArkTS语言开发入门之前言(二)
2025 ArkTS语言开发入门之前言(二) 前言 在上一节,咱们学习了如何下载并安装ArkTS的集成开发环境,这时候有的臭宝会发现,左边的这些叽里咕噜的是什么?下面,我来带着臭宝们来学习一下这些是什么…...
VLAN(虚拟局域网)
一、vlan概述 VLAN(virtual local area network)是一种通过逻辑方式划分网络的技术,允许将一个物理网络划分为多个独立的虚拟网络。每一个vlan是一个广播域,不同vlan之间的通信需要通过路由器或三层交换机 [!注意] vlan是交换机独有的技术,P…...
2025.4.6总结
今日记录:今天玩的有些累,先是去护肤店护理了脸部,然后去汉口江滩那看了看美景,吹吹江风。节假日去玩,光是挤一个半小时地铁都感觉累。还好上下班期间不用挤地铁,不然还真受不了。 假期小结 1.消费&#…...
【清明折柳】写在扬马三周目后
黄绿之间,方寸之外。 文章目录 楔子解耦到离散螃蟹与毒药文本的力量朝花夕拾后记 楔子 “——就像物理学家通过演绎与归纳将宏微世界的运转规律浓缩到数学公式中时,如今的人工智能也在试图量化整个人类文明。” “——只是,使用的是昂贵、笨…...
P1258 小车问题(二分)
题目描述 甲、乙两人同时从 A 地出发要尽快同时赶到 B 地。出发时 A 地有一辆小车,可是这辆小车除了驾驶员外只能带一人。已知甲、乙两人的步行速度一样,且小于车的速度。问:怎样利用小车才能使两人尽快同时到达。 输入格式 仅一行&#x…...
一个基于ragflow的工业文档智能解析和问答系统
工业复杂文档解析系统 一个基于ragflow的工业文档智能解析和问答系统,支持多种文档格式的解析、知识库管理和智能问答功能。 系统功能 1. 文档管理 支持多种格式文档上传(PDF、Word、Excel、PPT、图片等)文档自动解析和分块处理实时处理进度显示文档解析结果预览批量文档…...
负指数二项式展开
转载:负指数二项式展开_二项式负数次幂的展开式-CSDN博客...
CentOS 7服务器上快速安装mamba函数库
本次预配置虚拟环境为cuda 11.8torch 2.2.2python 3.10 1. 创建conda虚拟环境:conda create -n mamba python3.10 激活环境:conda activate mamba 2. 安装Pytorch环境: conda install pytorch2.2.2 torchvision0.17.2 torchaudio2.2.2 py…...
ResNet改进(18):添加 CPCA通道先验卷积注意力机制
1. CPCA 模块 CPCA(Channel Prior Convolutional Attention)是一种结合通道先验信息的卷积注意力机制,旨在通过显式建模通道间关系来增强特征表示能力。 核心思想 CPCA的核心思想是将通道注意力机制与卷积操作相结合,同时引入通道先验知识,通过以下方式优化特征学习: 通…...
代码随想录算法训练营--打卡day6
一.四数相加 1.题目链接 454. 四数相加 II - 力扣(LeetCode) 2.思路 使用 HashSet 无法记录每种和出现的次数,当不同的 (nums1[i], nums2[j]) 组合得到相同的和时,会出现统计错误。这里应该使用 HashMap 来记录和以及其出现的…...
edge webview2 runtime跟Edge浏览器软件安装包双击无反应解决方法
软件安装报错问题有需要远程文章末尾获取联系方式,可以帮你远程处理各类安装报错。 一 、edge webview2 runtime跟Edge浏览器软件安装包双击无反应 在安装edge webview2 runtime跟Edge浏览器双击无反应没有出现安装界面。这个可能是 新版本的Edge WebView2 Runti…...
Xorg 内存上涨的根源探究
Xorg 内存上涨的根源探究 起因 在同一客户端进程内显示多股视频源,通过SDL创建窗口渲染,由于网络抖动视频源出现频繁断流现象导致,渲染任务反复重启,从而导致SDL渲染窗口反复创建释放,最后导致Xorg内存持续上涨 排查准备 Xorg是什么? Xorg(X.Org Server)是 X Wind…...
Neo4j基本命令使用
neo4j neo4j简介安装可视化管理后台登录 Cyphercreatematchmergecreate创建关系merge创建关系wheredelete sort命令字符串函数toUpper()函数toLower()函数substring()函数replace()函数 聚合函数count()函数max()函数min()函数sum()函数avg()函数索引index python 中使用neo4j …...
Python爬虫教程009:requests的基本使用以及get和post请求的使用
文章目录 5.1 基本使用5.2 get请求5.3 post请求5.1 基本使用 在 Python 爬虫开发中,requests 是一个非常流行、简单易用的 HTTP 库,用于发送网络请求。它可以让你方便地抓取网页内容、提交表单、上传文件等。 🔧安装: pip install requestsresponse的属性及类型: resp…...
SQL练习
目录 1.查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 2.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩 3.查询在 SC 表存在成绩的学生信息 4.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显…...
ubuntu20.04 复现fastlio2 并运行数据包
1.搭建文件目录和拷贝代码 mkdir -p Fastlio2/src cd Fastlio2/src git clone https://github.com/hku-mars/FAST_LIO.git git clone https://github.com/Livox-SDK/livox_ros_driver.git 2.到工作空间下编译 cd .. catkin_make 报错1: 解决方案1: …...
Windows安装 PHP 8 和mysql9,win下使用phpcustom安装php8.4.5和mysql9
百度搜索官网并下载phpcustom,然后启动环境,点击网站管理 里面就有php8最新版,可以点mysql设置切mysql9最新版,如果你用最新版无法使用,说明你的php程序不支持最新版的mysql MySQL 9.0 引入了一些新的 SQL 模式和语法变…...
【失配树 KMP+树上倍增】P5829失配树|省选-
本文涉及知识点 较难理解的字符串查找算法KMP 树上倍增 P5829 【模板】失配树 题目描述 给定一个字符串 s s s,定义它的 k k k 前缀 p r e k \mathit{pre}_k prek 为字符串 s 1 … k s_{1\dots k} s1…k, k k k 后缀 s u f k \mathit{suf}_…...
机器学习模型性能提升教程(特征工程和模型优化)
特征工程和模型优化是提升机器学习模型性能的核心步骤,以下从特征工程和模型优化两个维度,结合具体案例展开说明: 一、特征工程 特征工程的核心目标是从原始数据中提取更有价值的信息,常见方法包括特征选择、特征构造和特征转换。…...
跨域问题前端解决
由于浏览器的同源策略,前后端分离的项目,调试的时候总是会遇到跨域的问题,这里通过修改前端代码解决跨域问题。 首先先查看前端代码的根目录下,有没有vue.config.js文件, 若有,使用方法1,若没有此文件&…...
每天五分钟深度学习框架pytorch:搭建LSTM完成时间序列的预测
本文重点 前面一篇文章我们使用了pytorch搭建了循环神经网络LSTM然后完成了手写字体识别的任务,本文我们使用LSTM完成一个时间序列的任务。 数据集介绍 数据集如图所示,其中有一列是时间,然后还有一列是对应时间的起飞航班数,它可以看成是一个时间序列,通过前面t时间的起…...
Autosar应用层开发基础——Arxml制作
Davinci软件的主要作用 (1) AUTOSAR 软件架构设计 图形化建模:支持 SWC(Software Component)设计、接口定义、端口连接等。 分层架构管理:清晰划分 应用层(SWC) 和 基础软件层(BSW)…...
Word 页眉设置(不同章节不同页眉)
需求分析 要给文档设置页眉,但是要不同的页眉不同的页眉 问题点:一旦设置页眉 每个页眉都是一样的 现在要设置不一样的 设置了页眉但是整个文章的页眉都一样 问题解决 取消链接 前一节(不和前面的页眉同步更新) 小结 不同的…...
Redis的Java客户端的使用
Redis 的 Java 客户端使用 C 追求极致的性能, 而 Java没有这样的追求. Redis 在官网公开了所使用的应用层协议 (RESP). 任何一个第三方都可以通过这个协议, 来实现出一个和 Redis 服务器通信的客户端程序. 已经有很多大佬, 做好了库, 可以让我们直接调用 (不必关注 RESP 协议…...
双向链表示例
#include <stdio.h> #include <stdlib.h>// 定义双向链表节点结构体 typedef struct list {int data; // 数据部分struct list *next; // 指向下一个节点的指针struct list *prev; // 指向前一个节点的指针 } list_t;// 初始化链表,将链表的…...
Unity如何把一个物体下物体复制很多到别的物体下
C# 脚本批量复制 如果需批量复制到多个父物体下,推荐用脚本实现: using UnityEngine;public class CopyChildren : MonoBehaviour {// 原父物体(拖拽赋值)public Transform sourceParent;// 目标父物体数组(可拖拽多个…...
Java Properties 类详解
Java Properties 类详解 Properties 是 Java 中用于处理 键值对配置文件 的特殊类,继承自 Hashtable<Object,Object>。以下是其核心知识点: 1. 核心特性 特性说明存储格式纯文本文件(.properties),每行 keyval…...
进程内存分布--之理论知识
一个由C/C编译的程序占用的内存分为以下几个部分 : 1、栈区(stack):由编译器自动分配释放 ,存放函数调用函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap…...
TDengine 窗口预聚集
简介 在大数据量场景下,经常需要查询某段时间内的汇总结果,当历史数据变多或者时间范围变大时,查询时间也会相应增加。通过预聚集的方式可以将计算结果提前存储下来,后续查询可以直接读取聚集结果,而不需要扫描原始数…...
高精度加法与乘法
原理就是模拟我们列竖式的过程。 一、加法 加法很简单,我们这里不再赘述 string solve(string s, string t) {string ans;int tmp 0;int n s.size()-1;int m t.size()-1;while(n>0||m>0||tmp){if(n>0){tmp s[n--]-0;}if(m>0){tmp t[m--]-0;}ans…...