第十四届蓝桥杯大赛软件赛省赛C/C++大学 B 组

第十四届蓝桥杯大赛软件赛省赛C/C++大学 B 组

文章目录

  • 第十四届蓝桥杯大赛软件赛省赛C/C++大学 B 组
    • 1、日期统计
    • 2、01串的熵
    • 3、冶炼金属
    • 4、飞机降落
    • 5、接龙数列
    • 6、岛屿个数
    • 7、子串简写
    • 8、整数删除
    • 9、景区导游
    • 10、砍树

1、日期统计

在这里插入图片描述
分析:

本题的意思就是2023年一整年,所有的日期,都用yyyymmdd表示,是否能从给出的数组中找到对应的数字。
已知2023不会再变,我们只需要枚举月份和天数即可。
因为是子序列所以我们也要按照顺序找对应数字。

代码分析:

#include<bits/stdc++.h>
using namespace std;
int a[105]; 
// 闰年是 29 天,平年是 28 天 
int d[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int sa[10];
int main(){
	ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
	for(int i=0;i<100;i++)cin>>a[i];
	int ans=0;
	for(int i=1;i<=12;i++){
		for(int j=1;j<=d[i];j++){
			int date[8]={2,0,2,3,i/10,i%10,j/10,j%10};
			int index=0;
			for(int k=0;k<100;k++){
				if(a[k]==date[index]){
					index++;
					if(index==8){
						ans++;
						break;
					}
				}
			} 
		}
	}
	cout<<ans;
	return 0;
}

2、01串的熵

在这里插入图片描述
分析:

这一题要有数学思维,可以先表达式化简在进行计算。经过对对数的化简,我们求出x即可得到结果。

在这里插入图片描述
代码示例:

#include<bits/stdc++.h>
using namespace std;
double n=23333333;
int main(){
	ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
	double res=-(11625907.5798);
	for(int x=10;x<n+100000;x++){
		double num=pow(x,2)*(log2(x)-log2(n))+pow(n-x,2)*(log2(n-x)-log2(n));
		num/=n;
		if(num<=res){
			cout<<x;return 0;
		}
	}
	return 0;
}

3、冶炼金属

在这里插入图片描述
在这里插入图片描述
分析:

对于100%的数据,要满足到1e9所以我们要使用long long的数据类型。

示例代码:

#include<iostream>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
using ll = long long;
int main(){
	ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
	// A B V    B <= A/V < B+1  咱们是为了找到maxv,minv
	// 1/(B+1) < V/A <= 1/B
	// A/(B+1) < V <= A/B
	int n;cin>>n;
	ll maxv=1e18,minv=0; 
	for(int i=0;i<n;i++){
		ll a,b;cin>>a>>b;
		maxv=min(maxv,a/b);// 最大值是偏小的哪个 
		minv=max(minv,a/(b+1)+1);
	}
	cout<<minv<<" "<<maxv;
	return 0;
}

4、飞机降落

在这里插入图片描述
在这里插入图片描述

分析:

其实对于这一题,就是纯全排列问题,也就是说只要有一组方式满足题意即可。我们可以使用搜索来写,每一架飞机受到的影响都是前一架飞机降落的最晚时间。

示例代码:

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 15;
struct node{
	int t,d,l;
}p[N];
int n;
bool vis[N];
bool dfs(int dep,int last){
	if(dep==n)return true;
	for(int i=0;i<n;i++){
		int t,d,l;
		t=p[i].t,d=p[i].d,l=p[i].l;
		if(!vis[i]&&last<=t+d){
			vis[i]=true;
			if(dfs(dep+1,max(last,t)+l))return true;
			vis[i]=false;
		}
	}
	return false;
}
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int T;cin>>T;
	while(T--){
		cin>>n;
		for(int i=0;i<n;i++){
			int t,d,l;cin>>t>>d>>l;
			p[i]={t,d,l};
		}
		memset(vis,0,sizeof(vis));
		if(dfs(0,0))cout<<"YES\n";
		else cout<<"NO\n";
	}
	return 0; 
}

5、接龙数列

在这里插入图片描述
分析:

动态规划的问题,题中问的是最少删除几个,我们可以得到接龙数列?那么我们就可以逆向思维,不妨找到最长的接龙数列ans,让n-ans。
我们可以设置状态dp[i]表示以i结尾的最长接龙数列。

代码示例:

#include<iostream>
#include<vector>
using namespace std;
int dp[15];// 表示以i结尾的最长接龙数列 
int n;
string s; 
int main(){
	ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>s;
		int l=s.size();
		// 这里就感觉非常像lis那种类型一样都是这样的动态规划
		dp[s[l-1]-'0']=max(dp[s[l-1]-'0'],dp[s[0]-'0']+1);
	}
	int maxn=0;
	for(int i=0;i<10;i++)maxn=max(maxn,dp[i]);
	cout<<n-maxn;
	return 0;
}

6、岛屿个数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分析:
其实我们不需要遍历连通没有,我们要找的是岛屿的数量,只需要在外层加一层海洋,外层海洋可以涌入的地方,如果涌入的地方周围有陆地,那么这块陆地一定不在一个子岛屿中,反之,某个地方外层海洋无法涌入,一定是被某个环状岛屿包围所导致的,即位于某个子岛屿中。外层海洋无法涌入的地方,无需遍历。

从(0,0)处进行外层海洋的bfs,由于岛屿是上下左右四个方向的,那么外层海洋往里面渗入时需要从八个方向进行遍历。在进行外层海洋bfs时,如果遇到陆地了,那么说明所在的岛屿连通块需要被统计,此时进行岛屿的bfs。

代码示例:

#include<iostream>
#include<cstring>
#include<queue>
#define pii pair<int,int>
using namespace std;
int dx[8] = {1, -1, 0, 0, 1, -1, 1, -1};
int dy[8] = {0, 0, 1, -1, 1, -1, -1, 1};
const int N = 55;
char g[N][N];
bool vis[N][N];
int n, m, ans;
//岛屿BFS
void bfs(int sx, int sy){
	queue<pii> q;
	q.push({sx,sy});
	vis[sx][sy]=true;
	
	while(!q.empty()){
		pii d=q.front();
		q.pop();
		for(int k=0;k<4;k++){
			int nx=d.first+dx[k],ny=d.second+dy[k];
			if(nx<1||nx>n||ny<1||ny>m)continue;
			if(g[nx][ny]=='0'||vis[nx][ny])continue;
        	q.push({nx,ny});
			vis[nx][ny]=true; 
		}
	}
}
//外层海洋BFS
void bfs_sea(int sx, int sy){
    queue<pii> q;
    q.push({sx, sy});
    vis[sx][sy] = true;
    
    while(!q.empty()){
        pii d = q.front();
        q.pop();
        for(int k=0;k<8;k++ ){
            int nx=d.first+dx[k],ny=d.second+dy[k];
            if(nx<0||nx>n+1||ny<0||ny>m+1||vis[nx][ny])continue;
            if(g[nx][ny] == '1'){
            	bfs(nx, ny);
				ans++; //如果遇到外层海水领近的陆地
			}else{
				q.push({nx,ny});
				vis[nx][ny]=true; 
			}
        }
    }
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	int t;cin>>t;
	while(t--){
		ans=0;
		cin>>n>>m;
		memset(vis,0,sizeof(vis));
		memset(g,'0',sizeof(g));
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				cin>>g[i][j];
		bfs_sea(0,0);
		cout<<ans<<"\n";
	}
    return 0;
}

7、子串简写

在这里插入图片描述
在这里插入图片描述
分析:
我们可以看到数据规模是5e5,如果我们使用双指针遍历寻找的话,肯定超时只能的一部分分,我们就需要考虑优化过程,不让其两次循环遍历,我们就可以想到前缀和数组,去记录答案。
在这道题上,我们应该使用后缀和数组,nexsum[i] 表示的是在 i 的右边有 nextsum[i] 个 c2 字符,那么我们就可以用 nextsum[i+k-1] 直接得到符合题意的数量了。

示例代码:

#include<iostream>
using namespace std;
using ll = long long;
const int N = 5e5+5;
ll nextsum[N];
char c1,c2;
string s;
int main(){
	ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
	int K;cin>>K;// j - i >= K
	cin>>s>>c1>>c2;
	ll ans=0;
	for(int i=s.size()-1;i>=0;i--){
		nextsum[i]=nextsum[i+1];
		if(s[i]==c2){
			nextsum[i]++;
		}
	}
	for(int i=0;i<s.size();i++){
		if(s[i]==c1&&i+K-1<s.size()){
			ans+=nextsum[i+K-1];
		}
	}
	cout<<ans;
	return 0;
}

8、整数删除

在这里插入图片描述
在这里插入图片描述
分析:

其实我看到选择最靠前的最小值时,我就想到的优先队列来写,但是我又考虑到这个数的两边的都要加上这个被删除的值,所以如果用优先队列的话会不会破坏数据的顺序所以就用了vector来写,结果就是过了30%(O(n2)),其它的全部超时了。如果想要过掉全部数据就要使用优化的算法。

所以我们就要使用链表+优先队列去优化这个过程:
1、找出最小值(小根堆){ a[pos] , pos } -> pair<int,int>
2、找到最小值相邻的未被删除的数字

//1.没有优化的代码,超时
//#include<iostream>
//#include<vector>
//using namespace std;
//using ll = long long;
//vector<ll> a;
//int n,k,t;
//int getmin_index(){
//	int idx=0;
//	for(int i=1;i<t;i++){
//		if(a[i]<a[idx])idx=i;
//	}
//	return idx;//第一个最小值的下标 
//}
//int main(){
//	ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
//	cin>>n>>k;
//	for(int i=0;i<n;i++){
//		ll num;cin>>num;
//		a.push_back(num);
//	}
//	t=n;
//	while(k--){
//		int index=getmin_index();
//		ll tmp=a[index];
//		if(index-1>=0)a[index-1]+=tmp;
//		if(index+1<=t)a[index+1]+=tmp;
//		a.erase(a.begin()+index);
//		t=a.size();
//	}
//	for(const auto& x:a)cout<<x<<" ";
//	return 0;
//}


// 2.采用链表+堆优化这个过程
#include<iostream>
#include<queue>
using namespace std;
#define ll long long
#define pii pair<ll,ll>
const ll N = 5e5+10;
ll l[N],r[N],st[N];
// l[N] 表示i位置左边的位置
// r[N] 表示i位置右边的位置 
int n,k;
int main(){
	ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
	cin>>n>>k;
	priority_queue<pii,vector<pii>,greater<pii>> q;
	for(ll i=0;i<n;i++){
		ll num;cin>>num;
		q.push({num,i});
		st[i]=num;
		l[i]=i-1;
		r[i]=i+1;
		if(r[i]==n)r[i]=-1;
	}
	while(k){
		pii p=q.top();
		q.pop();
		/*
			为什么这里要判断一下p.first!=st[p.second]呢?
			因为我们已经再下面将st[i]的值更新了,但是这个更新的值并没有重新应用到堆里面。
			所以我们需要更新这个值,而且哪个在堆里面没有更新的值已经pop掉了。所以不用担心重复增加问题。 
		*/
		if(p.first!=st[p.second]){
			q.push({st[p.second],p.second});
			continue;
		}
		k--;
		ll pos = p.second;
		// l[i] r[i] 这个双向链表要仔细理解 
		if(l[pos]>=0)st[l[pos]]+=p.first;
		if(r[pos]>=0)st[r[pos]]+=p.first;
		
		if(l[pos]>=0)r[l[pos]]=r[pos];
		if(r[pos]>=0)l[r[pos]]=l[pos];
		
		st[pos]=-1;
	}
	for(ll i=0;i<n;i++){
		if(st[i]!=-1)cout<<st[i]<<' ';
	}
	return 0;
}

9、景区导游

在这里插入图片描述

在这里插入图片描述

分析:

看到路径的题,首先想到的就是最短路径算法dijkstra和floyd,我不太会dijkstra所以我用的floyd,对于此题,评测规模时1e5那么使用floyd必定超时或者空间不够,在此我只记录自己的写法。
我们可以先将所有的最短路径都预处理一下,此后我们就只需要进行枚举灭一个要走的景点即可。

暴力解法,只能通过30%:

#include<iostream>
#include<vector>
#include<algorithm> 
#define ll long long
using namespace std;
const ll N = 5e3+10,INF = 1e18;
ll d[N][N];
int n,m;
void floyd(){
	for(int k=1;k<=n;k++){
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++){
				if(d[i][k]!=INF&&d[k][j]!=INF){
					d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
				}
			}
	} 
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	for(int i=0;i<N;i++)
		for(int j=0;j<N;j++)
			d[i][j]=INF;
	cin>>n>>m;	
	for(int i=0;i<n-1;i++){
		int u,v,w;cin>>u>>v>>w;
		d[u][v]=d[v][u]=w;
	}
	vector<int> a;
	for(int i=0;i<m;i++){
		int nn;cin>>nn;
		a.push_back(nn);
	}
	
	floyd();
	
	for(int i=0;i<a.size();i++){
		int ans=0;
		vector<int> p(a.begin(),a.end());
		p.erase(p.begin()+i);
		for(int j=0;j<p.size()-1;j++){
			int u=p[j],v=p[j+1];
			ans+=d[u][v];
		}
		cout<<ans<<" ";
	}
	return 0;
} 

10、砍树

在这里插入图片描述

在这里插入图片描述

分析:

根据题意我们可以知道,就是一个有n-1条边的树,现在要求的是剪短一条边,会让所有的数对都不在连通的结果,问这个边的最大的编号是什么?
根据上面,我们知道剪短2和4都可以实现3-5,4-6不连通,但是4>2所以我们剪短2。
所以说这道题就是考察图的连通性的,所以我们可以使用搜索从编号大的向小的遍历看那个符合要求就输出,否则输出-1。

暴力解法,只能通过30%:

#include<iostream>
#include<vector>
#include<cstring>
#define ll long long
using namespace std;
const ll N = 1e5+10;
vector<pair<ll,ll>> g[N];// 前向星 
bool vis[N];
ll n,m,s[N],t[N];// (s[i],t[t]) 数对 
bool dfs(int s,int t,int id){
	if(s==t)return true;
	for(int i=0;i<g[s].size();i++){
		ll nxt=g[s][i].first,edgeId=g[s][i].second;
		if(edgeId==id)continue;//如果传进来的id等于要删除的边的编号则不走 
		if(vis[nxt])continue;
		vis[nxt]=1;
		if(dfs(nxt,t,id))return true;
	}
	return false;
}
int main(){
	ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
	cin>>n>>m;
	for(int i=1;i<n;i++){
		int u,v;cin>>u>>v;
		// 邻接表 
		g[u].push_back({v,i});//u - v,记录这条边编号为 i 
		g[v].push_back({u,i});
	}
	
	for(int i=1;i<=m;i++){
		cin>>s[i]>>t[i];
	}
	// 从编号大的向小的搜索 g[i]
	for(int i=n-1;i>=1;i--){
		bool flag=true;
		// 搜索每个数对 是否不连通  s[j] -> t[j] 如果搜不到即为成功 
		for(int j=1;j<=m;j++){
			memset(vis,0,sizeof(vis)); 
			vis[s[j]]=1;
			if(dfs(s[j],t[j],i)){
				flag=false;
				break;
			}
		}
		if(flag){
			cout<<i;return 0;
		}
	}
	cout<<"-1";
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/531807.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker容器嵌入式开发:在Ubuntu上配置Postman和flatpak

在 Ubuntu 上配置 Postman 可以通过 Snap 命令完成&#xff0c;以下是所有命令的总结&#xff1a; sudo snap install postmansudo snap install flatpak在 Ubuntu 上配置 Postman 和 Flatpak 非常简单。以下是一些简单的步骤&#xff1a; 配置 Flatpak 安装 Flatpak&#x…

unity 寻找隐藏节点 transform.find

由于习惯了godot 的路径寻找&#xff0c;学习unity的时候一直在找类似的方式。最终发现transform.find最相似。 但在寻找隐藏&#xff08;inactive&#xff09;的节点遇到了坑。 其实transform.find能不能找到隐藏节点是基于你在find中使用的是绝对路径还是相对路径。 绝对路…

【LAMMPS学习】八、基础知识(1.7) LAMMPS 与 MDI 库代码耦合

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

数据结构和算法:回溯

回溯算法 回溯算法&#xff08;backtracking algorithm&#xff09;是一种通过穷举来解决问题的方法&#xff0c;它的核心思想是从一个初始状态出发&#xff0c;暴力搜索所有可能的解决方案&#xff0c;当遇到正确的解则将其记录&#xff0c;直到找到解或者尝试了所有可能的选…

招聘小程序里可以展示详细的岗位信息,方便用户自行报名,省时省力

平台目前规定要通过招聘小程序进行报白。报白通过后就可以在直播间正常招聘了&#xff0c;但是必须挂载小程序&#xff0c;否则还是容易被警告限流。 招聘小程序里可以展示详细的岗位信息&#xff0c;方便用户自行报名&#xff0c;省时省力。 抖音直播招聘报白是一种通过直播…

Day36代码随想录(1刷) 贪心

738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 10 输出: 9示例 2: 输入: n 1234 输出: …

IPEX-LLM(原名BigDL-LLM)环境配置

IPEX-LLM 是一个为Intel XPU (包括CPU和GPU) 打造的轻量级大语言模型加速库&#xff0c;在Intel平台上具有广泛的模型支持、最低的延迟和最小的内存占用。 您可以使用 IPEX-LLM 运行任何 PyTorch 模型&#xff08;例如 HuggingFace transformers 模型&#xff09;。在运行过程中…

顺序表之队列

上一篇博客我们学习了栈的实现&#xff0c;这一篇我们继续学习队列&#xff0c;让我们开始吧&#xff01; 1.认识队列 1.概念&#xff1a;只允许在一端进行插入数据的操作&#xff0c;在另一端进行删除数据的操作的特殊想线性 表&#xff0c;队列具有先进先出…

Transformer详解和知识点总结

目录 1. 注意力机制1.1 注意力评分函数1.2 多头注意力&#xff08;Multi-head self-attention&#xff09; 2. Layer norm3. 模型结构4. Attention在Transformer中三种形式的应用 论文&#xff1a;https://arxiv.org/abs/1706.03762 李沐B站视频&#xff1a;https://www.bilibi…

【随笔】Git 基础篇 -- 分支与合并 git rebase(十)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

《QT实用小工具·二十四》各种数学和数据的坐标演示图

1、概述 源码放在文章末尾 该项目实现了各种数学和数据的坐标演示图&#xff0c;下面是demo演示&#xff1a; 项目部分代码如下&#xff1a; #ifndef FRMMAIN_H #define FRMMAIN_H#include <QWidget> class QAbstractButton;namespace Ui { class frmMain; }class fr…

最长公共子序列(线性dp)-java

本文主要来描述两个字符串的最长公共子序列问题 文章目录 前言 一、最长公共子序列 二、算法思路 1.dp[i][j]的四种情况 2. dp[i-1][j]、dp[i][j-1]、dp[i-1][j-1]的关系 3.dp数组的状态转移方程 4.dp数组具体如下 三、代码如下 1.代码如下&#xff08;示例&#xff09;&#x…

Linux设备深探:桥接硬件与软件的秘密通道

在Linux的世界里&#xff0c;"设备"这个词汇比你想象的要丰富和多彩得多。让我们一起来探索Linux设备的奥秘&#xff0c;理解它们是如何在Linux操作系统中发挥作用的。&#x1f427;✨ 1. 什么是Linux设备&#xff1f; 在Linux中&#xff0c;设备被看作是一种特殊的…

STM32页读页写AT24CXX(HAL库 模拟IIC)

参考文章&#xff1a; 这里附上一篇看到写得很好的大佬的文章&#xff1a;STM32F407单片机通用24CXXX读写程序&#xff08;KEIL&#xff09;&#xff0c;兼容24C系列存储器&#xff08;24C01到24C512&#xff09;&#xff0c;支持存储器任意地址跨页连续读写多个页 AT24C32/64…

WebGIS实现各地区COVID-19数据一览

1.项目地址 GISpjd/WebGIS-Show-Covid19 (github.com)&#xff0c;具体每个文件的职能可以参考README文档。 2.前言 预览 >> 所用技术栈&#xff1a; 项目需求本身不是过于复杂&#xff0c;所以没有在相应前端框架下完成&#xff0c;但转入框架也是比较容易的 &#…

thinkphp6入门(22)-- 如何下载文件

假设在public/uploads文件夹下有一个文件test.xlsx 在前端页面添加下载链接&#xff0c;用户点击该链接即可下载对应的文件。 <a href"xxxxxxx/downloadFile">下载文件</a> 2. 在后端控制器方法中&#xff0c;我们需要获取要下载的文件路径&#xff0…

看linux内核启动流程需要的arm汇编学习笔记(二)

文章目录 一、ldr1.地址偏移模式2.变基模式3.标签3.1 访问宏定义3.2 访问一个字符串3.3 访问一个data 二、ldp和stp1.双字节加载2.双字节存储3.双字节存储的后变基模式 三、位操作1. 移位2. 按位操作3. 位段插入4.位段提取5.零计数指令 四、跳转指令1. cmp比较两个数2. cmn负向…

面试官为什么喜欢考察Vue底层原理

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

系统更新Javahome之后,eclipse ide没有同步更新的解决方案

1、确认eclipse idea当前使用jdk 路径 &#xff1a; 2、确认Ide路径为旧的之后&#xff0c;去到eclipse的应用启动路径&#xff0c;编辑【eclipse.ini】, 在【-vmargs】之前设置vm路径&#xff08;换行为必须的&#xff09;&#xff1a; -vm C:\Program Files\Java\jdk1.8.0_1…

自动驾驶硬件-GNSS

自动驾驶硬件-GNSS 高精度全局定位系统本质上可以看做一个级联的定位系统&#xff0c;先通过GNSS系统提供一个可能的位置范围&#xff0c;再利用激光雷达(Lidar)系统、视觉定位系统等方法进行局部环境的搜索匹配&#xff0c;从而实现厘米级的定位精度。由于需要由GNSS为高精度…