算法学习系列(五十四):单源最短路的综合应用

news2024/11/24 0:56:08

目录

  • 引言
  • 一、新年好
  • 二、通信线路
  • 三、道路与航线
  • 四、最优贸易

引言

关于这个单源最短路的综合应用,其实最短路问题最简单的就是模板了,这是一个基础,然后会与各种算法结合到一块,就是不再考察单个知识点了,而是各种知识点融合到一块,你一块地方不会,你这道题就做不出来,主要是跟二分、暴搜等算法结合。


一、新年好

标签:单源最短路、枚举

思路:这道题给了一个无向图,然后问从一个起点出发,中途必须至少经过 5 5 5 个点,问最短的路径是什么。思路就是我们可以暴力枚举这 5 5 5 个点的顺序,然后经过每一个点肯定是一个最短路,所以我们可以提前预处理出来算上起点在内的 6 6 6 个点到每一个点的最短路,然后暴力枚举经过点的顺序,然后求其路径和的最小值即可,详情见代码。

题目描述:

重庆城里有 n 个车站,m 条 双向 公路连接其中的某些车站。

每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的路径需要花费的时
间可能不同。

在一条路径上花费的时间等于路径上所有公路需要的时间之和。

佳佳的家在车站 1,他有五个亲戚,分别住在车站 a,b,c,d,e。

过年了,他需要从自己的家出发,拜访每个亲戚(顺序任意),给他们送去节日的祝福。

怎样走,才需要最少的时间?

输入格式
第一行:包含两个整数 n,m,分别表示车站数目和公路数目。

第二行:包含五个整数 a,b,c,d,e,分别表示五个亲戚所在车站编号。

以下 m 行,每行三个整数 x,y,t,表示公路连接的两个车站编号和时间。

输出格式
输出仅一行,包含一个整数 T,表示最少的总时间。

数据范围
1≤n≤50000,1≤m≤105,1<a,b,c,d,e≤n,1≤x,y≤n,1≤t≤100
输入样例:
6 6
2 3 4 5 6
1 2 8
2 3 3
3 4 4
4 5 5
5 6 2
1 6 7
输出样例:
21

示例代码:

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;
typedef pair<int,int> PII;
#define x first
#define y second

const int N = 5e4+10, M = 2e5+10, INF = 0x3f3f3f3f;

int n, m;
int h[N], e[M], w[M], ne[M], idx;
int dist[6][N];
bool st[N];
int path[6] = {1};

void add(int a, int b, int c)
{
	e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}

void dijkstra(int s, int dist[])
{
	memset(dist, 0x3f, N * 4);
	memset(st, 0, sizeof st);
	dist[s] = 0;
	
	priority_queue<PII, vector<PII>, greater<PII>> heap;
	heap.push({0,s});
	while(heap.size())
	{
		auto t = heap.top(); heap.pop();
		
		int p = t.y;
		if(st[p]) continue;
		st[p] = true;
		
		for(int i = h[p]; i != -1; i = ne[i])
		{
			int j = e[i];
			if(dist[j] > dist[p] + w[i])
			{
				dist[j] = dist[p] + w[i];
				heap.push({dist[j],j});
			}
		}
	}
}

int main()
{
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	
	memset(h, -1, sizeof h);
	cin >> n >> m;
	for(int i = 1; i < 6; ++i) cin >> path[i];
	while(m--)
	{
		int a, b, c; cin >> a >> b >> c;
		add(a,b,c), add(b,a,c);
	}
	
	for(int i = 0; i < 6; ++i) dijkstra(path[i], dist[i]);
	
	LL res = 1e18;
	int arr[5] = {1,2,3,4,5};
	do
	{
		int last = 0;
		LL sum = 0;
		for(int i = 0; i < 5; ++i)
		{
			int j = arr[i];
			sum += dist[last][path[j]];
			last = j;
		}
		res = min(res, sum);
	}while(next_permutation(arr,arr+5));
	
	cout << res << endl;
	
	return 0;
}

二、通信线路

标签:图论、SPFA、动态规划、二分、双端队列BFS

思路:首先这道题可以简化为求第 k + 1 k+1 k+1 大的路径中的最小值,最值的问题我们一半可以用二分来做。首先就是要找到一个性质,假如我们已经找到了答案,如下图,那么答案右边的区间中的边权 ≥ a n s \geq ans ans 的肯定是 ≤ k \leq k k 的。然后我们就用二分去做,我们可以建立一个图,大于 a n s ans ans 的边权为 1 1 1 ,反之为 0 0 0 ,然后我们可以用最短算法即可。值得注意的是二分的边界点问题,左边界肯定是 0 0 0 ,因为有可能最少路径数是小于等于 k k k 的,然后最大可能为 1 e 6 1e6 1e6 ,但是这道题还可能出现路径不存在的情况,根据性质二分会逼近右端点,这时将无法判断,所以我们可以将右端点取 1 e 6 + 1 1e6+1 1e6+1 这样合法的最大值为 1 e 6 1e6 1e6 ,但要是不存在路径,则为右端点。另外只有 01 01 01 的边权的最短路可以用双端队列 B F S BFS BFS 来做,其实就是一个简易版的堆优化版的 D i j k s t r a Dijkstra Dijkstra
在这里插入图片描述

题目描述:

在郊区有 N 座通信基站,P 条 双向 电缆,第 i 条电缆连接基站 Ai 和 Bi。

特别地,1 号基站是通信公司的总站,N 号基站位于一座农场中。

现在,农场主希望对通信线路进行升级,其中升级第 i 条电缆需要花费 Li。

电话公司正在举行优惠活动。

农产主可以指定一条从 1 号基站到 N 号基站的路径,并指定路径上不超过 K 条电缆,由电话公司免费提供升级服务。

农场主只需要支付在该路径上剩余的电缆中,升级价格最贵的那条电缆的花费即可。

求至少用多少钱可以完成升级。

输入格式
第 1 行:三个整数 N,P,K。

第 2..P+1 行:第 i+1 行包含三个整数 Ai,Bi,Li。

输出格式
包含一个整数表示最少花费。

若 1 号基站与 N 号基站之间不存在路径,则输出 −1。

数据范围
0≤K<N≤1000,1≤P≤10000,1≤Li≤1000000
输入样例:
5 7 1
1 2 5
3 1 4
2 4 8
3 2 3
5 2 9
3 4 7
4 5 6
输出样例:
4

示例代码:

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;
typedef pair<int,int> PII;
#define x first
#define y second

const int N = 1010, M = 2e4+10, INF = 0x3f3f3f3f;

int n, p, k;
int h[N], e[M], w[M], ne[M], idx;
deque<int> q;
int dist[N];
bool st[N];

void add(int a, int b, int c)
{
	e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}

bool check(int bound)
{
	memset(dist, 0x3f, sizeof dist);
	memset(st, 0, sizeof st);
	dist[1] = 0;
	
	q.push_back(1);
	while(q.size())
	{
		int t = q.front(); q.pop_front();
		
		if(st[t]) continue;
		st[t] = true;
		
		for(int i = h[t]; i != -1; i = ne[i])
		{
			int j = e[i], v = w[i] > bound;
			if(dist[j] > dist[t] + v)
			{
				dist[j] = dist[t] + v;
				if(!v) q.push_front(j);
				else q.push_back(j);
			}
		}
	}
	
	return dist[n] <= k;
}

int main()
{
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	
	memset(h, -1, sizeof h);
	cin >> n >> p >> k;
	while(p--)
	{
		int a, b, c; cin >> a >> b >> c;
		add(a,b,c), add(b,a,c);
	}
	
	int l = 0, r = 1e6+1;
	while(l < r)
	{
		int mid = l + r >> 1;
		if(check(mid)) r = mid;
		else l = mid + 1;
	}
	
	if(r == 1e6+1) r = -1;
	cout << r << endl;
	
	return 0;
}

三、道路与航线

标签:图论、Dijkstra、最短路

思路:这道题一看带有负权边,那就可以拿 s p f a spfa spfa 直接做了,建图的方式也是很常规,然后就是数据比较大,所以有几个样例过不了,其实对于打蓝桥杯其实是够了的,因为大部分分拿到手就够了,要看目的是什么。其实正确的写法应该是把陆地连一起,然后用拓扑序来做,可这样很费时间而且不好写,所以就不做了。但是要过全部数据可以拿 L I S LIS LIS 进行优化,类似于双端队列广搜,具体细节见代码。

题目描述:

农夫约翰正在一个新的销售区域对他的牛奶销售方案进行调查。

他想把牛奶送到 T 个城镇,编号为 1∼T。

这些城镇之间通过 R 条道路 (编号为 1 到 R) 和 P 条航线 (编号为 1 到 P) 连接。

每条道路 i 或者航线 i 连接城镇 Ai 到 Bi,花费为 Ci。

对于道路,0≤Ci≤10,000;然而航线的花费很神奇,花费 Ci 可能是负数(−10,000≤Ci≤10,000)。

道路是双向的,可以从 Ai 到 Bi,也可以从 Bi 到 Ai,花费都是 Ci。

然而航线与之不同,只可以从 Ai 到 Bi。

事实上,由于最近恐怖主义太嚣张,为了社会和谐,出台了一些政策:保证如果有一条航线可以从 Ai 到 Bi,那么保证不可能通
过一些道路和航线从 Bi 回到 Ai。

由于约翰的奶牛世界公认十分给力,他需要运送奶牛到每一个城镇。

他想找到从发送中心城镇 S 把奶牛送到每个城镇的最便宜的方案。

输入格式
第一行包含四个整数 T,R,P,S。

接下来 R 行,每行包含三个整数(表示一个道路)Ai,Bi,Ci。

接下来 P 行,每行包含三个整数(表示一条航线)Ai,Bi,Ci。

输出格式
第 1..T 行:第 i 行输出从 S 到达城镇 i 的最小花费,如果不存在,则输出 NO PATH。

数据范围
1≤T≤25000,1≤R,P≤50000,1≤Ai,Bi,S≤T
输入样例:
6 3 3 4
1 2 5
3 4 5
5 6 10
3 5 -100
4 6 -100
1 3 -10
输出样例:
NO PATH
NO PATH
5
0
-95
-100

示例代码:

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;
typedef pair<int,int> PII;
#define x first
#define y second

const int N = 3e5+10, M = 2e5+10, INF = 0x3f3f3f3f;

int n, r, p, S;
int h[N], e[M], w[M], ne[M], idx;
int dist[N];
bool st[N];

void add(int a, int b, int c)
{
	e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}

void spfa()
{
	memset(dist, 0x3f, sizeof dist);
	dist[S] = 0, st[S] = true;
	
	deque<int> q; q.push_back(S);
	while(q.size())
	{
		int t = q.front(); q.pop_front();
		st[t] = false;
		
		for(int i = h[t]; i != -1; i = ne[i])
		{
			int j = e[i];
			if(dist[j] > dist[t] + w[i])
			{
				dist[j] = dist[t] + w[i];
				if(!st[j])
				{
					if(q.size() && dist[j] < dist[q.front()]) q.push_front(j);
					else q.push_back(j);
				}
			}
		}
	}
}

int main()
{
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	
	memset(h, -1, sizeof h);
	cin >> n >> r >> p >> S;
	while(r--)
	{
		int a, b, c; cin >> a >> b >> c;
		add(a,b,c), add(b,a,c);
	}
	while(p--)
	{
		int a, b, c; cin >> a >> b >> c;
		add(a,b,c);
	}
	
	spfa();
	for(int i = 1; i <= n; ++i)
	{
		int t = dist[i];
		if(t == INF) cout << "NO PATH" << endl;
		else cout << t << endl;
	}
	
	return 0;
}

四、最优贸易

标签:图论、SPFA

思路:首先这道题问的是最大的差价是什么,那么肯定存在一个分界点,使得这个点之前的最小值和这个点之后的最大值的差值最大,那么我们就可以找到每一个点之前的最小值和其之后的最大值,然后取它们差值的最大值即可。首先这道题不能用 D i j k s t r a Dijkstra Dijkstra ,因为这个算法本质还是一个 B F S BFS BFS 算法,就是每个点只会遍历一次,第一次遍历的为极值,但是这道题中你第一次走到的点不一定就是极值点,所以采用 s p f a spfa spfa 算法,然后将 d i s t dist dist 数组改为 d m i n , d m a x dmin,dmax dmin,dmax ,记录每个点之前的最值,然后最小值从前往后遍历,最大值从后向前遍历即可。

题目描述:

C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市。

任意两个城市之间最多只有一条道路直接相连。

这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为 1 条。

C 国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格不一定相同。

但是,同一种商品在同一个城市的买入价和卖出价始终是相同的。

商人阿龙来到 C 国旅游。

当他得知“同一种商品在不同城市的价格可能会不同”这一信息之后,便决定在旅游的同时,利用商品在不同城市中的差价赚一点
旅费。

设 C 国 n 个城市的标号从 1∼n,阿龙决定从 1 号城市出发,并最终在 n 号城市结束自己的旅行。

在旅游的过程中,任何城市可以被重复经过多次,但不要求经过所有 n 个城市。

阿龙通过这样的贸易方式赚取旅费:他会选择一个经过的城市买入他最喜欢的商品——水晶球,并在之后经过的另一个城市卖出
这个水晶球,用赚取的差价当做旅费。

因为阿龙主要是来 C 国旅游,他决定这个贸易只进行最多一次,当然,在赚不到差价的情况下他就无需进行贸易。

现在给出 n 个城市的水晶球价格,m 条道路的信息(每条道路所连接的两个城市的编号以及该条道路的通行情况)。

请你告诉阿龙,他最多能赚取多少旅费。

注意:本题数据有加强。

输入格式
第一行包含 2 个正整数 n 和 m,中间用一个空格隔开,分别表示城市的数目和道路的数目。

第二行 n 个正整数,每两个整数之间用一个空格隔开,按标号顺序分别表示这 n 个城市的商品价格。

接下来 m 行,每行有 3 个正整数,x,y,z,每两个整数之间用一个空格隔开。

如果 z=1,表示这条道路是城市 x 到城市 y 之间的单向道路;如果 z=2,表示这条道路为城市 x 和城市 y 之间的双向道路。

输出格式
一个整数,表示答案。

数据范围
1≤n≤100000,1≤m≤500000,1≤各城市水晶球价格≤100
输入样例:
5 5
4 3 5 6 1
1 2 1
1 4 1
2 3 2
3 5 1
4 5 2
输出样例:
5

示例代码:

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;
typedef pair<int,int> PII;
#define x first
#define y second

const int N = 1e5+10, M = 2e6+10, INF = 0x3f3f3f3f;

int n, m;
int w[N];
int hs[N], he[N], e[M], ne[M], idx;
int dmin[N], dmax[N];
bool st[N];

void add(int h[], int a, int b)
{
	e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}

void spfa(int S, int dist[], int h[], bool flag)
{
	memset(st, 0, sizeof st);
	if(flag) memset(dist, 0x3f, sizeof dmin);
	else memset(dist, -1, sizeof dmin);
	st[S] = true, dist[S] = w[S];
	
	queue<int> q; q.push(S);
	while(q.size())
	{
		int t = q.front(); q.pop();
		st[t] = false;
		
		for(int i = h[t]; i != -1; i = ne[i])
		{
			int j = e[i];
			if((flag && dist[j] > min(dist[t],w[j])) || (!flag && dist[j] < max(dist[t],w[j])))
			{
				if(flag)
				{
					dist[j] = min(dist[t], w[j]);
				}
				else
				{
					dist[j] = max(dist[t], w[j]);
				}
				
				if(!st[j]) st[j] = true, q.push(j);
			}
		}
	}
}

int main()
{
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	
	memset(hs, -1, sizeof hs);
	memset(he, -1, sizeof he);
	cin >> n >> m;
	for(int i = 1; i <= n; ++i) cin >> w[i];
	while(m--)
	{
		int a, b, c; cin >> a >> b >> c;
		add(hs,a,b), add(he,b,a);
		if(c == 2) add(hs,b,a), add(he,a,b);
	}
	
	spfa(1,dmin,hs,true);
	spfa(n,dmax,he,false);
	
	int res = 0;
	for(int i = 1; i <= n; ++i)
	{
		res = max(res, dmax[i] - dmin[i]);
	}
	
	cout << res << endl;
	
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【RBAC鉴权】node-casbin基础教程

一、RBAC概述 RBAC鉴权&#xff0c;完整的英文描述是&#xff1a;Role-Based Access Control&#xff0c;中文意思是&#xff1a;基于角色&#xff08;Role&#xff09;的访问控制。这是一种广泛应用于计算机系统和网络安全领域的访问控制模型。 简单来说&#xff0c;就是通过…

a-table 控制列的展示和隐藏

一、业务场景&#xff1a; 最近在使用 Antd-vue 组件库的时候&#xff0c;a-table需要根据不同角色的权限显示和隐藏 columns的列 为了避免大家走弯路&#xff0c;为大家整理了一下&#xff0c;粘走可以直接用的那种 二、具体实现步骤&#xff1a; 1.在需要显示与隐藏的列增加一…

Android Studio实现简单的自定义钟表

项目目录 一、项目概述二、开发环境三、详细设计3.1、尺寸设置3.2、绘制表盘和指针3.3、动态效果 四、运行演示五、总结展望六、源码获取 一、项目概述 在安卓开发中&#xff0c;当系统自带的View已经无法满足项目需求时&#xff0c;就要自定义View。在Android中是没有与钟表有…

深度学习之基于Matlab BP神经网络烟叶成熟度分类

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 烟叶的成熟度是评估烟叶品质的重要指标之一&#xff0c;它直接影响着烟叶的口感、香气和理化特性。传…

jupyter notebook切换conda虚拟环境

首先&#xff0c;切换到某个虚拟环境&#xff0c;本人切换到了d2l环境&#xff1a; (d2l) C:\Users\10129>pip install ipykernel然后&#xff0c;如代码所示安装ipykernel包 最后&#xff0c;按下述代码执行&#xff1a; (d2l) C:\Users\10129>python -m ipykernel i…

软件工程全过程性文档(软件全套文档整理)

软件项目相关全套精华资料包获取方式①&#xff1a;进主页。 获取方式②&#xff1a;本文末个人名片直接获取。 在软件开发的全过程中&#xff0c;文档是记录项目进展、决策、设计和测试结果的重要工具。以下是一个简要的软件全过程性文档梳理清单&#xff1a; 需求分析阶段…

Ex1-C6油气化工防爆轮式巡检机器人

Ex1系列防爆轮式巡检机器人整机采用防爆设计&#xff0c;防爆等级为Exd II CT4 Gb。机器人通过无轨3D形态导航技术&#xff0c;结合360度防爆云台和无线防爆充电桩&#xff0c;实现整套防爆标准&#xff0c;可广泛应用于石油、燃气、化工、冶金等II类爆炸环境中&#xff0c;代替…

【Qt QML】QLibrary加载共享库中的类

QLibrary是一个用于加载动态链接库&#xff08;或称为共享库&#xff09;的类。它提供了一种独立于平台的方式来访问库中的功能。 在QLibrary中&#xff0c;可以通过构造函数或setFileName()方法设置要加载的库文件名。当加载库文件时&#xff0c;QLibrary会搜索所有平台特定的…

VmWare 虚拟机没有网络解决办法

由于最近需要&#xff0c;装了个VM虚拟机&#xff0c;但是突然发现本机有网络&#xff0c;虚拟机却没有网络&#xff0c;更换了虚拟机的网络设置&#xff0c;都尝试过了 都不管用&#xff0c; 最后尝试了这种方法完美解决 还原网络默认设置 首先还原虚拟网络编辑器设置 启动V…

Re69:读论文 LaMDA: Language Models for Dialog Applications

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称&#xff1a;LaMDA: Language Models for Dialog Applications ArXiv网址&#xff1a;https://arxiv.org/abs/2201.08239 本文介绍谷歌提出的对话大模型LaMDA&#xff0c;主要关注对各项指标&#x…

使用 MediaMTX 和 FFmpeg 推拉 RTSP 流媒体

实时流传输协议 RTSP&#xff08;Real-Time Streaming Protocol&#xff09;是 TCP/IP 协议体系中的一个应用层协议&#xff0c;由哥伦比亚大学、网景和 RealNetworks 公司提交的 IETF RFC 标准。该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP 在体系…

idea常用知识点随记

idea常用知识点随记 1. 打开idea隐藏的commit窗口2. idea中拉取Git分支代码3. idea提示代码报错&#xff0c;项目编译没有报错4. idea中实体类自动生成序列号5. idea隐藏当前分支未commit代码6. idea拉取新建分支的方法 1. 打开idea隐藏的commit窗口 idea左上角File→Settings…

Linux的软件包管理器-yum

文章目录 软件包的概念yum源的配置的原因yum的使用查看软件包安装软件卸载软件 软件包的概念 软件包(SoftWare Package)是指具有特定的功能&#xff0c;用来完成特定任务的一个程序或一组程序。可分为应用软件包和系统软件包两大类 在Linux系统中&#xff0c;下载安装软件的方式…

设计模式: 模板模式

目录 一&#xff0c;模板模式 二&#xff0c;特点 三&#xff0c;组成部分 四&#xff0c;实现步骤 五&#xff0c;案例 一&#xff0c;模板模式 模板模式&#xff08;Template Pattern&#xff09;是一种行为型设计模式&#xff0c;它在超类中定义了一个算法的骨架&#…

React Native支持Tailwind CSS 语法

React Native支持Tailwind CSS 语法 一、前沿背景 回想下我们平时按照官方的规范进行书写样式是什么样&#xff1f; 是像下面这样&#xff1a; const MyComponent () > {return (<View><Text style{{ fontSize: 20 }}>开发者演示专用</Text></View…

每日一题(力扣213):打家劫舍2--dp+分治

与打家劫舍1不同的是它最后一个和第一个会相邻&#xff0c;事实上&#xff0c;从结果思考&#xff0c;最后只会有三种&#xff1a;1 第一家不被抢 最后一家被抢 2 第一家被抢 最后一家不被抢 3 第一和最后一家都不被抢 。那么&#xff0c;根据打家劫舍1中的算法 我们能算出在i…

【linux】进程间通信(匿名管道)

对于本篇文章我们采取三段论&#xff1a;是什么 为什么 怎么办。 目录 进程间为什么要通信&#xff1f;进程间如何通信&#xff1f;进程间怎么通信&#xff1f;匿名管道&#xff1a;匿名管道原理&#xff1a;代码示例&#xff1a;匿名管道的情况与特征&#xff1a; 进程间为什…

Debian 12 tomcat 9 catalina 日志信息 中文显示乱码

目录 问题现象 解决办法&#xff1a; 1、设定Debian locale 2、设定catalina.sh utf8字符集 问题现象 Debian 12 linux操作系统中&#xff0c;tomcat 9 catalina 启动日志输出 中文乱码 解决办法&#xff1a; 1、设定Debian locale 先确保系统本身就支持中文的 Debian …

【数据结构】算法的效率(时间复杂度和空间复杂度)

目录 一.算法的效率 二.时间复杂度 1.概念 2.大O的渐进表示法 3.常见时间复杂度计算举例 三.空间复杂度 四.常见复杂度对比 五. 复杂度的oj练习 1.消失的数字 2.轮转数字&#xff1a; 一.算法的效率 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空…

uniapp 异步加载级联选择器(Cascader,data-picke)

目录 Props 事件方法 inputChange事件回调参数说明&#xff1a; completeChange事件回调参数说明&#xff1a; temList 属性Object参数说明 defaultItemList 属性Object参数说明 在template中使用 由于uniapp uni-ui的data-picke 不支持异步作者自己写了一个 插件市场下…