吉林大学23级数据结构上机实验(第7周)

A 去火车站

寒假到了,小明准备坐火车回老家,现在他从学校出发去火车站,CC市去火车站有两种方式:轻轨和公交车。小明为了省钱,准备主要以乘坐公交为主。CC市还有一项优惠政策,持学生证可以免费乘坐一站轻轨(但只能乘坐一站)。小明想尽快到达火车站,请编写程序为小明找到一条从学校到火车站最快的路线及换乘轻轨的方案。

假设换乘时间忽略不计,公交车与轻轨站点相同,但线路和速度不一定相同,所有线路都是双向的。可以第一站就乘坐轻轨,也可以最后一站乘坐轻轨,也可以在中间某站坐轻轨。如果乘坐轻轨和不乘坐轻轨到达火车站的时间相同,则无需换乘轻轨。最多坐一站轻轨。

输入格式:

输入包含多组数据。每组数据第一行为3个整数n、s和t,分别表示车站数(编号为1至n),小明学校所在的站和火车站所在的站。下一行为一个整数m,表示公交车的线路信息,接下来m行,每行为3个正整数a、b、c,表示公交车从a站到b站需要c分钟。下一行为一个整数k,表示轻轨的线路信息,接下来k行,每行为3个正整数x、y、z,表示轻轨从x站到y站需要z分钟。所有整数均不超过20000。

输出格式:

对每组数据输出2行。第1行为1个整数T,表示从学校到达火车站的最短时间;第2行为一个整数K,表示在站点K换乘轻轨,若有多个可能的换乘点,则输出编号最小者,如果无需换乘轻轨,则第二行输出“no metro”。

输入样例:

4 1 4
4
1 2 2
1 3 3
2 4 4
3 4 5
1
2 4 3
4 1 4
4
1 2 2
1 3 3
2 4 4
3 4 5
1
2 4 3

输出样例:

5
2
5
2

 思路:

这里给出两种做法,第一种就是老师题解的思路,正反跑一遍,然后一一比较大小差异。。

我们可以思考一下假设不是走1条轻轨,而是k条轻轨,这道题该怎么做。写题稍微多一点的朋友肯定知道k条边限制的题一般都是用分层图最短路去写,感兴趣的朋友可以去看看我写的另一篇博文分层图最短路,感觉有点像拆点,也有点像dp。。

法一:

#include<bits/stdc++.h>
using namespace std;
const int N = 20010;
typedef pair<int, int>PII;
int h[2*N], e[2*N], w[2*N], ne[2*N], idx;
int dis1[N], dis2[N];
bool st1[N], st2[N];
bool flag;
int ans, cnt;
int n, m, k, s, t;
void init()
{
	ans = 0x3f3f3f3f;
	cnt = 0x3f3f3f3f;
	flag = 1;
	idx = 0;
	memset(st1, false, sizeof st1);
	memset(dis1, 0x3f, sizeof dis1);
	memset(dis2, 0x3f, sizeof dis2);
	memset(st2, false, sizeof st2);
	memset(h, -1, sizeof h);
	memset(e, 0, sizeof e);
	memset(w, 0, sizeof w);
	memset(ne, 0, sizeof ne);
}
void add(int a, int b, int c) {
	e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}
void dijkstral(int u,int dis[],bool st[]) {
	priority_queue<PII, vector<PII>, greater<PII>>q;
	q.push({ 0,u });
	dis[u] = 0;
	while (q.size()) {
		auto p = q.top();
		q.pop();
		int v = p.second;
		if (st[v]) {
			continue;
		}
		st[v] = true;
		for (int i = h[v];~i;i = ne[i]) {
			int j = e[i];
			if (st[j]) {
				continue;
			}
			if (dis[j] > dis[v] + w[i]) {
				dis[j] = dis[v] + w[i];
				q.push({ dis[j],j});
			}
		}
		
	}
}
void solve()
{
	while (cin >> n >> s >> t) {
		init();
		cin >> m;
		for (int i = 1;i <= m;i++) {
			int a, b, c;
			cin >> a >> b >> c;
			add(a, b, c);
			add(b, a, c);
		}
		dijkstral(s,dis1,st1);
		dijkstral(t, dis2, st2);
		ans = dis1[t];
		cin >> k;
		for (int i = 1;i <= k;i++) {
			int a, b, c;
			cin >> a >> b >> c;
			if (dis1[a] + c + dis2[b] < ans) {
				flag = 0;
				ans =  dis1[a] + c + dis2[b];
				cnt = a;
			}
			else if (dis1[a] + c + dis2[b] == ans) {
				cnt = min(a, cnt);
			}
			if (dis1[b] + c + dis2[a] < ans) {
				flag = 0;
				ans = dis1[b] + c + dis2[a];
				cnt = b;
			}
			else if (dis1[b] + c + dis2[a] == ans) {
				cnt = min(cnt, b);
			}
		}
		if (flag) {
			cout << dis1[t] << endl;
			cout << "no metro" << endl;
		}
		else {
			cout << ans << endl;
			cout << cnt << endl;
		}
	}
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	solve();
	return 0;
}

法二:

#include<bits/stdc++.h>
using namespace std;
const int N = 20010, M = 40010;
typedef pair<int, pair<int, int>>PII;
int h[N], e[M], ne[M], w[M], idx;
int h2[N], e2[M], ne2[M], w2[M], idx2;
int dis[N][2];
bool st[N][2];
int cnt[N];
int n, m, k, s, t;
int ans;
int f;
void add(int a, int b, int c) {
	e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}
void add2(int a, int b, int c) {
	e2[idx2] = b, w2[idx2] = c, ne2[idx2] = h2[a], h2[a] = idx2++;
}
void dij()
{
	memset(dis, 0x3f, sizeof dis);
	memset(st, false, sizeof st);
	priority_queue<PII, vector<PII>, greater<PII>>q;
	q.push({ 0,{s,0} });
	dis[s][0] = 0;
	while (q.size()) {
		auto p = q.top();
		q.pop();
		int v = p.second.first;
		int u = p.second.second;
		if (st[v][u]) {
			continue;
		}
		st[v][u] = true;
		for (int i = h[v];~i;i = ne[i]) {
			int j = e[i];
			if (st[j][u]) {
				continue;
			}
			if (dis[j][u] > dis[v][u] + w[i]) {
				if (u == 1) {
					cnt[j] = cnt[v];
				}
				dis[j][u] = dis[v][u] + w[i];
				q.push({ dis[j][u],{j,u} });
			}
		}
		if (u + 1 <= 1) {
			for (int i = h2[v];~i;i = ne2[i]) {
				int j = e2[i];
				if (st[j][u + 1]) {
					continue;
				}
				if (dis[j][u + 1] > dis[v][u] + w2[i]) {
					dis[j][u + 1] = dis[v][u] + w2[i];
					cnt[j] = v;
					q.push({ dis[j][u + 1],{j,u + 1} });
				}
				else if (dis[j][u + 1] == dis[v][u] + w2[i]) {
					cnt[j] = min(cnt[j], v);
					//q.push({ dis[j][u + 1],{j,u + 1} });
				}
			}
		}

	}
}
void solve()
{
	while (cin >> n >> s >> t) {
		idx = 0;
		idx2 = 0;
		f = 0x3f3f3f3f;
		ans = 0x3f3f3f3f;
		memset(cnt, 0x3f, sizeof cnt);
		memset(e, 0, sizeof e);
		memset(ne, 0, sizeof ne);
		memset(w, 0, sizeof w);
		memset(h, -1, sizeof h);
		memset(e2, 0, sizeof e2);
		memset(ne2, 0, sizeof ne2);
		memset(w2, 0, sizeof w2);
		memset(h2, -1, sizeof h2);
		cin >> m;
		for (int i = 1;i <= m;i++) {
			int a, b, c;
			cin >> a >> b >> c;
			add(a, b, c);
			add(b, a, c);
		}
		cin >> k;
		for (int i = 1;i <= k;i++) {
			int a, b, c;
			cin >> a >> b >> c;
			add2(a, b, c);
		}
		dij();

		if (dis[t][0] <= dis[t][1]) {
			cout << dis[t][0] << endl;
			cout << "no metro" << endl;
		}
		else {
			cout << dis[t][1] << endl;
			cout << cnt[t] << endl;
		}
	}

}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	solve();
	return 0;
}

 

 B 联盟数目

艾迪是一家集团公司的老板,该集团包含n家公司,为了管理公司,艾迪会时常通过网络向各公司发送消息。各公司间的网络是单向的,每个公司都有一个分发列表,表示其能向哪些公司直接传达消息。例如A公司的分发列表为B、C,表示A可将消息直接传送给B和C(由于网络是单向的,B或C不一定能向A传送消息),这样艾迪若想向A、B、C公司发送消息,则只需向A发送消息即可,随后A可将消息传送到B和C。

为了便于管理各公司,艾迪打算将n家公司分成若干组,每组称为一个区域联盟,每组满足如下条件:组内的任意公司消息互相可达。即对于组内任意公司u和v,u可将消息传送到v(可由u直接传送到v,也可通过组内其他公司中转传送到v),v也可将消息传送到u。可以认为一个公司可以将消息传送给自己,即一个公司可以自成一组。

艾迪希望组的数量尽可能少,即在满足上述条件的情况下,每组包含的公司数目尽可能多。

现给定每个公司的分发列表,请编写程序告知艾迪,他的集团最少能分成多少组。

输入格式:

第一行包含一个整数T (1≤T≤100)表示数据组数。对于每组数据,第一行为一个整数n (2≤n≤100),表示公司数目,公司编号为1到n。随后n行,第i行包含若干整数,表示第i个公司的分发列表,每行以0结尾。

输出格式:

对于每组数据,输出一行,为一个整数,表示组数。

输入样例:

3
5
2 4 3 0
4 5 0
0
0
1 0
3
2 0
0
2 1 0
3
2 0
3 0
0

输出样例:

3
3
3

 思路:

这题我们依旧提供两种方法,一个是Floyd,一个是tarjan。

讲真的我以前真不知道Floyd可以求强连通分量。。

可能是n3次方太可拍了。。

Floyd

#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int dis[N][N];
bool st[N];
int n;
int ans;
void init()
{
	memset(dis, 0x3f, sizeof dis);
	memset(st, false, sizeof st);
	ans = 0;
	for (int i = 1;i <= n;i++) {
		dis[i][i] = 0;
	}
}
void solve()
{
	cin >> n;
	init();
	for (int i = 1;i <= n;i++) {
		int k;
		while (cin >> k && k != 0) {
			dis[i][k] = 1;
		}
	}
	for (int k = 1;k <= n;k++) {
		for (int i = 1;i <= n;i++) {
			for (int j = 1;j <= n;j++) {
				if (dis[i][j] > dis[i][k] + dis[k][j]) {
					dis[i][j] = dis[i][k] + dis[k][j];
				}
			}
		}
	}
	for (int i = 1;i <= n;i++) {
		if (st[i]) {
			continue;
		}
		st[i] = true;
		for (int j = i + 1;j <= n;j++) {
			if (st[j]) {
				continue;
			}
			if (dis[i][j] != 0x3f3f3f3f && dis[j][i] != 0x3f3f3f3f) {
				st[j] = true;
			}
		}
		ans++;
	}
	cout << ans<<endl;
}

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	int T;
	cin >> T;
	while (T--) {
		solve();
	}
	return 0;
}

tarjan:

#include<bits/stdc++.h>
using namespace std;
const int N = 110, M = N * N;
int h[N], e[M], ne[M], idx;
int scc_cnt, id[N], _size[N];
int dfn[N], low[N];
int stk[N], top;
bool in_stk[N];
int timestamp;
int n;
void init()
{
	timestamp = 0;
	scc_cnt = 0;
	top = 0;
	idx = 0;
	memset(h, -1, sizeof h);
	memset(e, 0, sizeof e);
	memset(ne, 0, sizeof ne);
	memset(id, 0 ,sizeof id);
	memset(_size, 0, sizeof _size);
	memset(dfn, 0, sizeof dfn);
	memset(stk, 0, sizeof stk);
	memset(low, 0, sizeof low);
	memset(in_stk, false, sizeof in_stk);
}
void add(int a, int b) {
	e[idx] = b, ne[idx] = h[a];h[a] = idx++;
}

void tarjan(int u)
{
    dfn[u] = low[u] = ++timestamp;
    stk[++top] = u, in_stk[u] = true;
    for (int i = h[u];i != -1;i = ne[i])
    {
        int j = e[i];
        if (!dfn[j]) {
            tarjan(j);
            low[u] = min(low[u], low[j]);
        }
        else if (in_stk[j]) {
            low[u] = min(low[u], low[j]);
        }
    }
    if (dfn[u] == low[u]) {
        int y;
        scc_cnt++;
        do {
            y = stk[top--];
            in_stk[y] = false;
            id[y] = scc_cnt;
            _size[scc_cnt]++;
        } while (u != y);
    }
}

void solve()
{
    init();
    cin >> n;
    for (int i = 1;i <= n;i++) {
        int k =-1;
        while (cin >> k && k != 0) {
            add(i, k);
        }
    }
    for (int i = 1;i <= n;i++) {
        if (dfn[i]) {
            continue;
        }
        else {
            tarjan(i);
        }
    }
    cout << scc_cnt << endl;

}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    int T;
    cin >> T;
    while (T--) {
        solve();
    }
    return 0;
}

这里的tarjan不需要这么麻烦,我只是写一个模板写多了。。

 C 社交网络

可以将n个QQ用户间的好友关系建模为一个包含n个顶点的无向图,顶点编号为1至n,每个顶点对应一个用户,若2个用户i和j是QQ好友,则在顶点i和j之间连接一条边,并根据用户间的亲密度对该边附以一个权值cij​。在该图中,可以利用两个顶点间的最短路径长度衡量两个用户的关系密切程度,也可以利用经过一个顶点的最短路径数目来衡量一个用户在关系网络中的影响力,具体地,我们定义用户k在QQ关系网络中的“影响力”为:

 

895d2abdc3975abc5a1643aadf3d44da.png

其中Nij​为顶点i到j的最短路径数目,Nijk​为顶点i到j的所有最短路径中经过顶点k的最短路径数目(上述二值可能超出int型范围,请使用long long类型)。Dij​表示i到j的最短路径长度。

现给定一个如上描述的无向图,请编写程序,计算每个顶点的“影响力”,假定给定的图是连通的。

输入格式:

输入第一行为两个正整数n和e,分别表示图的顶点数和边数,接下来e行表示每条边的信息,每行为3个正整数a、b、c,其中a和b表示该边的端点编号,c表示权值。各边并非按端点编号顺序排列。

n≤100,e≤5000,c≤1000,任意两点间的最短路径数目≤1010

输出格式:

输出为n行,每行一个实数,精确到小数点后3位,第i行为顶点i的影响力。

输入样例:

4 4
3 2 6
4 3 1
1 3 9
4 1 1

输出样例:

0.000
0.000
30.000
20.000

解释:

对于顶点1:边2-3、3-4、2-4的最短路径均不经过顶点1,故顶点1的影响力为0.

对于顶点3:
顶点1到2的最短路径共1条,长度为8,经过点3,顶点2到4的最短路径共1条,长度为7,经过点3,顶点1到4的最短路径共1条,但不经过点3。
故f(3)=D12​∗1+D24​∗1+D14​∗0+D21​∗1+D42​∗1+D41​∗0=8+7+0+8+7+0=30.000

提示:

若顶点a到顶点b有x条路径,点b到点c有y条路径,则a经过b到达c的路径有x*y条。

 思路:

这题是最简单的有没有人同感。。

就是简单的dijktra。。

只是一定要小心longlong相乘会越界,改成double就好了。

#include<bits/stdc++.h>
using namespace std;
const int N = 110, M = 10010;
typedef long long LL;
typedef pair<LL, int>PII;
LL dis[N][N];
bool st[N][N];
int h[N], e[M], ne[M], w[M], idx;
LL cnt[N][N];
int n, m;
double ans[N];
void add(int a, int b, int c) {
	e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}
void dijkstral(int u) {
	priority_queue<PII, vector<PII>, greater<PII>>q;
	q.push({ 0,u });
	dis[u][u] = 0;
	cnt[u][u] = 1;
	while (q.size()) {
		auto t = q.top();
		q.pop();
		int v = t.second;
		if (st[u][v]) {
			continue;
		}
		st[u][v] = true;
		for (int i = h[v];~i;i = ne[i]) {
			int j = e[i];
			if (st[u][j]) {
				continue;
			}
			if (dis[u][j] > dis[u][v] + w[i]) {
				dis[u][j] = dis[u][v] + w[i];
				cnt[u][j] = cnt[u][v];
				q.push({ dis[u][j],j});
			}
			else if (dis[u][j] == dis[u][v]+w[i]) {
				cnt[u][j] += cnt[u][v];
				q.push({ dis[u][j],j});
			}
		}
	}
}
void solve()
{
	cin >> n >> m;
	memset(st, false, sizeof st);
	memset(h, -1, sizeof h);
	memset(dis, 0x3f, sizeof dis);
	for (int i = 1;i <= m;i++) {
		int a, b, c;
		cin >> a >> b >> c;
		add(a, b, c);
		add(b, a, c);
	}
	for (int i = 1;i <= n;i++) {
		dijkstral(i);
	}
	for (int i = 1;i <= n;i++) {
		for (int j = 1;j <= n;j++) {
			for (int k = 1;k <= n;k++) {
				//cout << dis[j][k] << endl;
				//cout << cnt[j][k] << endl;
				if (j == i || k == i) {
					continue;
				}
				if (dis[j][k] == 0x3f3f3f3f||dis[j][i]==0x3f3f3f3f||dis[i][k]==0x3f3f3f3f) {
					continue;
				}
				if (cnt[j][i] == 0 || cnt[i][k]==0) {
					continue;
				}
				if (dis[j][k] != dis[j][i] + dis[i][k]) {
					continue;
				}
				//cout << i << " " << j << " " << k << endl;
				double x = cnt[j][i] * cnt[i][k];
				double y = x / cnt[j][k];
				ans[i] += y * dis[j][k];
			}
		}
	}
	for (int i = 1;i <= n;i++) {
		cout << fixed << setprecision(3) << ans[i] << endl;
	}
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	solve();
	return 0;
}

 

 

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

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

相关文章

谈谈IPD在PLM的落地

关注作者 1 前言 全球化市场竞争形势下&#xff0c;越来越多企业不断提升自身的研发创新能力&#xff0c;加大产品的研发创新投入。从整个研发投入来看&#xff0c;2022年至2023年间&#xff0c;研发投入强度由1.54%提升至2.64%&#xff0c;其中中小民营企业增长为3.75%&#…

线程(二)——线程安全

如何理解线程安全&#xff1a; 多线程并发执行的时候&#xff0c;有时候会触发一些“bug”&#xff0c;虽然代码能够执行&#xff0c;线程也在工作&#xff0c;但是过程和结果都不符合我们的开发时的预期&#xff0c;所以我们将此类线程称之为“线程安全问题”。 例如&#xff…

思特奇政·企数智化产品服务平台正式发布,助力运营商政企数智能力跃迁

数字浪潮下,产业数字化进程加速发展,信息服务迎来更广阔的天地,同时也为运营商政企支撑系统提出了更高要求。12月4日,2024数字科技生态大会期间,思特奇正式发布政企数智化产品服务平台,融合应用大数据、AI等新质生产要素,构建集平台服务、精准营销、全周期运营支撑、智慧大脑于…

解决Windows与Ubuntu云服务器无法通过Socket(udp)通信问题

今天在写Socket通信代码的时候&#xff0c;使用云服务器自己与自己通信没有问题&#xff0c;但是当我们把客户端换为Windows系统的时候却无法发送信息到Linux当中&#xff0c;耗时一上午终于搞定了&#x1f612;。 问题&#xff1a; 如上图&#xff0c;当我在windows的客户端…

面向金融场景的大模型 RAG 检索增强解决方案

概述 在现代信息检索领域&#xff0c;检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;模型结合了信息检索与生成式人工智能的优点&#xff0c;从而在特定场景下提供更为精准和相关的答案。在特定场景下&#xff0c;例如金融等领域&#xff0c;用户通…

【pyspark学习从入门到精通24】机器学习库_7

目录 聚类 在出生数据集中寻找簇 主题挖掘 回归 聚类 聚类是机器学习中另一个重要的部分&#xff1a;在现实世界中&#xff0c;我们并不总是有目标特征的奢侈条件&#xff0c;因此我们需要回归到无监督学习的范式&#xff0c;在那里我们尝试在数据中发现模式。 在出生数据…

渗透测试---burpsuite(5)web网页端抓包与APP渗透测试

声明&#xff1a;学习素材来自b站up【泷羽Sec】&#xff0c;侵删&#xff0c;若阅读过程中有相关方面的不足&#xff0c;还请指正&#xff0c;本文只做相关技术分享,切莫从事违法等相关行为&#xff0c;本人与泷羽sec团队一律不承担一切后果 视频地址&#xff1a;泷羽---bp&…

[LitCTF 2023]破损的图片(初级)

[LitCTF 2023]破损的图片(初级) 我们下载附件得到一个没有后缀的文件&#xff0c;拖去010看一看&#xff0c;发现本来应该是文件头的那部分不大对劲&#xff0c;结合后面四个点以及IHDR&#xff0c;大致也应该知道是啥了 修改第一行为png 89 50 4E 47 0D 0A 1A 0A 00 00 00 …

docker部署RustDesk自建服务器

客户端&#xff1a; Releases rustdesk/rustdesk GitHub 服务端&#xff1a; 项目官方地址&#xff1a;GitHub - rustdesk/rustdesk-server: RustDesk Server Program 1、拉取RustDesk库 docker pull rustdesk/rustdesk-server:latest 阿里云库&#xff1a; docker pu…

智慧银行反欺诈大数据管控平台方案(八)

智慧银行反欺诈大数据管控平台的核心理念&#xff0c;在于通过整合先进的大数据技术、算法模型和人工智能技术&#xff0c;构建一个全面、智能、动态的反欺诈管理框架&#xff0c;以实现对金融交易的全方位监控、欺诈行为的精准识别和高效处理。这一理念强调数据驱动决策&#…

关闭windows11的“热门搜索”

win10搜索栏热门搜索怎么关闭&#xff1f;win10搜索栏热门搜索关闭方法分享_搜索_onecdll-GitCode 开源社区 注册表地址是&#xff1a;计算机\HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\ 最后效果如下&#xff1a;

14.在 Vue 3 中使用 OpenLayers 自定义地图版权信息

在 WebGIS 开发中&#xff0c;默认的地图服务通常会带有版权信息&#xff0c;但有时候我们需要根据项目需求自定义版权信息或添加额外的版权声明。在本文中&#xff0c;我们将基于 Vue 3 的 Composition API 和 OpenLayers&#xff0c;完成自定义地图版权信息的实现。 最终效果…

Dubbo应用篇

文章目录 一、Dubbo简介二、SSM项目整合Dubbo1.生产者方配置2.消费者方配置 三、Spring Boot 项目整合Dubbo1.生产者方配置2.消费者方配置 四、应用案例五、Dubbo配置的优先级别1. 方法级配置&#xff08;Highest Priority&#xff09;2. 接口级配置3. 消费者/提供者级配置4. 全…

数据结构与算法 五大算法

文章目录 1&#xff0c;时间复杂度与空间复杂度 2&#xff0c;插入排序 3&#xff0c;希尔排序 4&#xff0c;选择排序 1&#xff0c;单趟排序 2&#xff0c;选择排序PLUS版本 5&#xff0c;冒泡排序 6&#xff0c;快速排序 1&#xff0c;hoare版本 2&#xff0c;挖坑法 前言 …

子类有多个父类的情况下Super不支持指定父类来调用方法

1、Super使用方法 super()函数在Python中用于调用父类的方法。它返回一个代理对象&#xff0c;可以通过该对象调用父类的方法。 要使用super()方法&#xff0c;需要在子类的方法中调用super()&#xff0c;并指定子类本身以及方法的名称。这样就可以在子类中调用父类的方法。 …

Java项目实战II基于微信小程序的消防隐患在线举报系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着城市化进程的加快&…

python学opencv|读取视频(一)灰度视频制作和保存

【1】引言 上一次课学习了用opencv读取图像&#xff0c;掌握了三个函数&#xff1a;cv.imread()、cv.imshow()、cv.imwrite() 相关链接如下&#xff1a; python学opencv|读取图像-CSDN博客 这次课我们继续&#xff0c;来学习用opencv读取视频。 【2】学习资源 首先是官网…

buuctf:被嗅探的流量

解压后用wireshark查看 flag{da73d88936010da1eeeb36e945ec4b97}

数据清洗代码:缺失值,异常值,离群值Matlab处理

目录 基本介绍程序设计参考资料基本介绍 一、过程概述 本过程适用于处理SCADA系统采集到的数据,以及具有类似需求的数据集。处理步骤包括缺失值处理、异常值处理和离群值处理,旨在提升数据质量,增强数据的相关性,同时保持数据的原始特征和随机性。 二、缺失值处理 对于SC…

深入浅出:Go语言中的错误处理

深入浅出&#xff1a;Go语言中的错误处理 引言 在任何编程语言中&#xff0c;错误处理都是一个至关重要的方面。它不仅影响程序的稳定性和可靠性&#xff0c;还决定了用户体验的质量。Go语言以其简洁明了的语法和强大的并发模型而著称&#xff0c;但其错误处理机制同样值得关…