【题解 | 分享】2023年十四届蓝桥杯国赛(Java B组)

news2025/1/20 1:54:35

互质

互质

答案:640720414

参考:

public class Main {
	static int mod = 1000000007;

	public static void main(String[] args) {
		long sum = power(2023, 2023);
		long p1 = ((sum % mod) * power(  7,  mod - 2)) % mod;
		long p2 = ((sum % mod) * power( 17,  mod - 2)) % mod;
		long p3 = ((sum % mod) * power(7*17, mod - 2)) % mod;

		long ans = (sum - p1 - p2 + p3 + mod + mod) % mod;
		System.out.println(ans);
	}

	static long power(long a, long p) { // 乘法快速幂
		long ans = 1;
		a %= mod;

		while (p != 0) {
			if ((p & 1) == 1) {
				ans = (ans * a) % mod;
			}
			a = (a * a) % mod;
			p >>= 1;
		}

		return ans;
	}
}

解题思路

我们知道,如果两个数互质,那么它们的最大公约数为1,我们需要找出在 [ 1 , 202 3 2023 ] [1, 2023^{2023}] [1,20232023] 范围内与 2023 2023 2023 互质的数的数量。

通过将 2023 2023 2023 分解质因子,发现是 7 7 7 17 17 17,所以在 [ 1 , 202 3 2023 ] [1, 2023^{2023}] [1,20232023] 范围内,与 2023 2023 2023 不互质的数,要么是 7 7 7 的倍数,要么是 17 17 17 的倍数,要么是 7 7 7 17 17 17 的公倍数。

因此,我们只需先计算所有数的数量( 202 3 2023 2023^{2023} 20232023),然后减去 7 7 7 的倍数、 17 17 17的倍数的数量以及 7 7 7 17 17 17 的公倍数。但需要注意,在减去 7 7 7的倍数和 17 17 17的倍数的数量时,我们实际上减去了两次 7 7 7 17 17 17的公倍数的数量,因为 7 7 7 17 17 17的公倍数既是 7 7 7的倍数,也是 17 17 17的倍数。因此在实际计算中,我们需要再加上一次7和17的公倍数的数量,以抵消这个重复计算的部分。

这也是很浅的"容斥原理",一分析就明白了。

另外,在实际编码中,我们可以:

  • 利用乘法快速幂来加速计算 a b a^b ab
  • 在计算有多少个数是 7 的倍数时,我们使用的是除法,而题目要求计算结果对 1000000007 1000000007 1000000007 取模,对于除法 (a / b) % mod来说,取模操作比较特殊,需要先求出逆元,我们使用power(b, mod - 2) 可以计算 b在模 mod 下的逆元。此时 (a / b) % mod 可转化为 ((a % mod) * (power(b, mod - 2))) % mod
  • 最终计算答案时,之所以要加上两次 mod,是因为要处理减法取模可能出现的负数结果。

逆元

逆元

答案:1307261675

这道题也不难,直接模拟求解就行,只不过一个个数去求逆元太慢了,下面展示如何加速求解 1 1 1 ~ n n n 区间内每个数的逆元,套用递推公式即可。

参考:

public class Main {
	static int n = 233333333;
	static int[] inv = new int[n+1];
	static final int MOD = 2146516019;

	public static void main(String[] args) {
		// 初始化:连续数字逆元的线性递推
		inv[1] = 1;
		for (int i = 2; i <= n; i++) {
			// 核心公式,不用纠结为什么,会用就行(原理是基于费马小定理和欧几里得算法)
			inv[i] = (int) (MOD - (long) inv[MOD % i] * (MOD / i) % MOD);
		}
		// 计算答案
		long ans = inv[1];
		for (int i = 2; i <= n; i++) {
			ans = (ans ^ inv[i]);
		}
		System.out.println(ans);
	}
}

连续数字逆元的线性递推是一种高效计算模 p p p 下每个数逆元的方法。

在模 p p p 意义下,我们可以使用以下公式来计算 1    2    3    . . .    n 1 ~~ 2 ~~ 3 ~~ ... ~~ n 1  2  3  ...  n 每个数的逆元:

inv[1] = 1
inv[i] = (int) (p - (long) inv[p % i] * (p / i) % p);

这个公式的推导基于费马小定理和欧几里得算法,其时间复杂度是 O ( n ) O(n) O(n) ,所以它非常高效的。

玩具

玩具

样例输入

2
2 2 3 4

样例输出

14

在这里插入图片描述
这道题,不知道为什么,一眼贪心,结果还真是。具体的,他们先把数列排个序,然后每次都拿最小的数和最大的数进行配对,相乘后累加答案,再去计算下一轮的结果,以此类推:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.Arrays;

public class Main {
	static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
	static StreamTokenizer in = new StreamTokenizer(bf);
	static PrintWriter out = new PrintWriter(System.out);
	
	public static void main(String[] args) throws IOException {
		in.nextToken();
		int n = (int)in.nval;
		n *= 2;
		
		long[] nums = new long[n];
		for(int i = 0; i<n; i++) {
			in.nextToken();
			nums[i] = (long)in.nval;
		}
		
		Arrays.sort(nums);
		
		int l = 0, r = n-1;
		long ans = 0;
		while(l < r) {
			ans += (nums[l++] * nums[r--]);
		}
		out.print(ans);
		
		out.flush();
		out.close();
		bf.close();
	}
}

不完整的算式

在这里插入图片描述

在这里插入图片描述

共四种情况,分类讨论即可,纯模拟。

参考:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class Main {
	static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
	static PrintWriter out = new PrintWriter(System.out);
	
	public static void main(String[] args) throws IOException {
		String line = bf.readLine(); // A op B = C
		int n = line.length();
		int A = 0, B = 0;
		char[] str = line.toCharArray();

		if(str[n-1] == '?') { // A op B = ?
			int idx = 0;
			// 先收集A
			while(str[idx] >= '0' && str[idx] <= '9') {
				A = A * 10 + (str[idx] - '0');
				idx++;
			}
			// 收集op
			char op = str[idx++];
			// 最后收集B
			while(str[idx] >= '0' && str[idx] <= '9') {
				B = B * 10 + (str[idx] - '0');
				idx++;
			}
			int C = compute1(A, op, B);
			System.out.println(C);
		} else {
			String[] parts = line.split("=");
			int C = Integer.parseInt(parts[1]);
			String s = parts[0];
			int m = s.length();
			char op = ' ';
			
			if(s.charAt(0) == '?') { // ? op B = C
				op = s.charAt(1);
				for(int i = 2; i<m; i++) {
					B = (B * 10) + (s.charAt(i) - '0');
				}
				A = compute2(B, op, C);
				System.out.println(A);
			} else if(s.charAt(m-1) == '?') { // A op ? = C
				op = s.charAt(m-2);
				for(int i = 0; i<m-2; i++) {
					A = (A * 10) + (s.charAt(i) - '0');
				}
				B = compute3(A, op, C);
				System.out.println(B);				
			} else { // A ? B = C
				String[] temp = s.split("\\?");
				A = Integer.parseInt(temp[0]);
				B = Integer.parseInt(temp[1]);
				op = compute4(A, B, C);
				System.out.println(op);
			}
		}		
	}
	
	public static int compute1(int A, char op, int B) { // A op B = ?
		int ans = 0;
		switch (op) {
		case '+':
			ans = A + B;
			break;
		case '-':
			ans = A - B;
			break;
		case '*':
			ans = A * B;
			break;
		case '/':
			ans = A / B;
			break;
		}
		return ans;
	}
	
	public static int compute2(int B, char op, int C) { // ? op B = C
		int A = 0;
		switch (op) {
		case '+':
			A = C - B;
			break;
		case '-':
			A = C + B;
			break;
		case '*':
			A = C / B;
			break;
		case '/':
			A = C * B;
			break;
		}
		return A;
	}
	
	public static int compute3(int A, char op, int C) { // A op ? = C
		int B = 0;
		switch (op) {
		case '+':
			B = C - A;
			break;
		case '-':
			B = A - C;
			break;
		case '*':
			B = C / A;
			break;
		case '/':
			B = A / C;
			break;
		}
		return B;
	}
	
	public static char compute4(int A, int B, int C) { // A ? B = C
		char ans = ' ';
		if(A + B == C) {
			ans = '+';
		} else if(A - B == C) {
			ans = '-';
		} else if(A * B == C) {
			ans = '*';
		} else if(A / B == C) {
			ans = '/';
		}
		return ans;
	}
}

星球

在这里插入图片描述
思路

经典旅行商问题,可用状态压缩DP来求解。

状态压缩是动态规划的一个小技巧,一般应用在集合问题中。当DP的状态是一个集合时,把集合的组合或排列用一个二进制来表示,也就是用某个数的二进制位(0/1组合)来表示集合的一个子集,从而用二进制的位操作来处理DP状态。

参考

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;

public class Main {
	static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
	static StreamTokenizer in = new StreamTokenizer(bf);
	static int n;
	static int MAXN = 18;
	static int x[] = new int[MAXN];
	static int y[] = new int[MAXN];
	static int z[] = new int[MAXN];
	static int w[] = new int[MAXN];
	static double dp[][] = new double[1 << MAXN][MAXN];

	public static void main(String[] args) throws IOException {
		// 输入数据
		n = nextInt();
		for (int i = 0; i < n; i++) {
			x[i] = nextInt();
			y[i] = nextInt();
			z[i] = nextInt();
			w[i] = nextInt();
		}
		// 初始化缓存表(用于记忆化搜索)
		for (int s = 0; s < (1 << n); s++) {
			for (int i = 0; i < n; i++) {
				dp[s][i] = -1;
			}
		}
		// 开始计算
		int end = (1 << n) - 1; // 进攻所有星球的最终集合状态,即全是1的状态(每个星球都进攻过了)
		double ans = Double.MAX_VALUE;
		for (int i = 0; i < n; i++) {
			// 尝试从每个星球出发,进攻所有星球所需的最少能量是多少?
			ans = Math.min(ans, f(1 << i, i, end));
		}
		System.out.printf("%.2f", ans);
	}

	/**
	 * 记忆化搜索,也可以改为严格位置依赖的动态规划
	 * 
	 * @param status 一个整型变量,表示当前的星球访问状态,我们关注其二进制位。如果为1,表示已经进攻过该星球,否则表示未进攻过。
	 * @param idx    表示当前所在的星球的位置(范围从 0 到 n-1 )。
	 * @param end    终止状态,即表示所有星球都被访问过的状态(所有比特位都为1)。
	 * @return 返回从当前idx星球出发,进攻所有未访问过的星球,所需的最少能量。
	 */
	public static double f(int status, int idx, int end) {
		if (status == end) { // 已经访问了所有星球,到达终止状态
			return 0; 
		}
		if (dp[status][idx] != -1) { // 缓存命中,直接返回
			return dp[status][idx];
		}
		double ans = Double.MAX_VALUE;
		for (int i = 0; i < n; i++) {
			// 如果 i 星球还没有被访问过,则尝试访问,并更新所需的最少能量
			if ((status & (1 << i)) == 0) {
				// status | (1 << i):将i星球添加到集合 status 中
				// dist(idx, i):从当前 idx 星球进攻 i 星球所需的能量
				ans = Math.min(ans, f(status | (1 << i), i, end) + dist(idx, i));
			}
		}
		// 加缓存
		dp[status][idx] = ans;
		return ans;
	}

	// 计算两点之间所需能量
	public static double dist(int v1, int v2) {
		double dx = Math.abs(x[v1] - x[v2]);
		double dy = Math.abs(y[v1] - y[v2]);
		double dz = Math.abs(z[v1] - z[v2]);
		return Math.sqrt(dx * dx + dy * dy + dz * dz) * w[v2];
	}

	public static int nextInt() throws IOException {
		in.nextToken();
		return (int) in.nval;
	}
}

序列

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

这道题的解法也是通过观察得知,我们根据样例一的数据进行绘表:

在这里插入图片描述
我们发现,这个表格:

  • 1 行和第 1 列均是:首项为 1 ,公差为 1 的等差数列
  • 2 行和第 2 列均是:首项为 2 ,公差为 1 的等差数列
  • 3 行和第 3 列均是:首项为 3 ,公差为 3 的等差数列
  • i 行和第 i 列均是:首项为 i ,公差为 i 的等差数列

对于 a a a 序列中的每一个元素 a i a_i ai,我们需要在当前这一列(等差数列)中查看每一个数 b i b_i bi,判断 a i a_i ai 是否整除 b i b_i bi,即 b i   %   a i = 0 b_i ~ \% ~ a_i = 0 bi % ai=0

因此:

  • a 1 a_1 a1 整除 b 2 b_2 b2 b 4 b_4 b4 ,该列贡献为 2
  • a 2 a_2 a2 整除 b 1 b_1 b1 b 2 b_2 b2 b 3 b_3 b3 b 4 b_4 b4 ,该列的贡献为 4
  • a 3 a_3 a3 整除 b 1 b_1 b1 b 2 b_2 b2 b 3 b_3 b3 b 4 b_4 b4 ,该列的贡献为 4
  • a 4 a_4 a4 整除 b 1 b_1 b1 b 2 b_2 b2 b 3 b_3 b3 b 4 b_4 b4 ,该列的贡献为 4

最终答案为 2 + 4 + 4 + 4 = 14 2+4+4+4 = 14 2+4+4+4=14

那现在关键在于,如何判断并查出 a i a_i ai 在首项为 i i i,公差为 i i i 的等差数列中,整除了哪些数?

答案取决于 a i a_i ai i i i 的最小公倍数,我们记为 lcm(ai, i)。那么每一列对答案的贡献就是 (i*n)/lcm(ai,i),其中 i*n 用于求出当前这一列等差数列的末尾数值,用它去除以 a i a_i ai i i i 的最小公倍数,就能够得到符合条件的数目。

比如:

在这里插入图片描述

i = 1 i = 1 i=1,此时 a 1 a_1 a1 的值为 2 2 2 2 2 2 1 1 1 的最小公倍数为 2 2 2,等差数列的末尾元素为 4 4 4,那么该列对答案的贡献就是 4 / 2 = 2 4 / 2 = 2 4/2=2

在这里插入图片描述

i = 2 i = 2 i=2,此时 a 2 a_2 a2 的值为 2 2 2 2 2 2 2 2 2 的最小公倍数为 2 2 2,等差数列的末尾元素为 8 8 8,那么该列对答案的贡献就是 8 / 2 = 4 8 / 2 = 4 8/2=4

以此类推。

纯粹通过观察,得出结论。

参考

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.ArrayList;
import java.util.List;

public class Main {
	static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
	static StreamTokenizer in = new StreamTokenizer(bf);
	static long n, ai, ans;

	public static void main(String[] args) throws IOException {
		n = nextLong();
		for(long i = 1; i<=n; i++) {
			ai = nextLong();
			ans += i * n / lcm(ai, i);
		}
		System.out.println(ans);
	}
	
	public static long lcm(long a, long b) {
	    return a / gcd(a, b) * b;
	}
	
	public static long gcd(long a, long b) {
	    return b == 0 ? a : gcd(b, a % b);
	}

	public static long nextLong() throws IOException {
		in.nextToken();
		return (long)in.nval;
	}
}

电动车

在这里插入图片描述

在这里插入图片描述
解题

求最小生成树中的最大单边权重:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.Arrays;

public class Main {
	public static int MAXN = 200001;
	public static int MAXM = 200001;
	public static int[] father = new int[MAXN];	// 并查集
	public static int[][] edges = new int[MAXM][3]; // u, v, w
	public static int n, m;
	public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	public static StreamTokenizer in = new StreamTokenizer(br);
	public static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));

	public static void main(String[] args) throws IOException {
		// 输入并初始化数据
		n = nextInt();
		for (int i = 1; i <= n; i++) {
			father[i] = i;
		}
		m = nextInt();
		for (int i = 0; i < m; i++) {
			edges[i][0] = nextInt();
			edges[i][1] = nextInt();
			edges[i][2] = nextInt();
		}
		// 根据边的权重排序,用于Kruskal算法求最小生成树
		Arrays.sort(edges, 0, m, (a, b) -> a[2] - b[2]);
		
		int ans = Integer.MIN_VALUE;
		int edgeCnt = 0;
		for (int i = 0, u, v, w; i < m; i++) {
			u = edges[i][0];
			v = edges[i][1];
			w = edges[i][2];
			if (union(u, v)) {	// 求生成最小树,并维护单次最大花费
				edgeCnt++;
				ans = Math.max(ans, w);
			}
		}
		
		out.println(edgeCnt == n-1 ? ans : -1);
		
		out.flush();
		out.close();
		br.close();
	}

	public static int find(int i) {
		if (i != father[i]) {
			father[i] = find(father[i]);
		}
		return father[i];
	}

	public static boolean union(int x, int y) {
		int fx = find(x);
		int fy = find(y);
		if (fx != fy) {
			father[fx] = fy;
			return true;
		} else {
			return false;
		}
	}
	
	public static int nextInt() throws IOException {
		in.nextToken();
		return (int)in.nval;
	}
}

游戏

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

思路:

对每个子序列求最大值和最小值的差值,并计算平均值:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;

public class Main {
	static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
	static StreamTokenizer in = new StreamTokenizer(bf);
	static int n, k;
	static int MAXN = 100001;
	static int[] arr = new int[MAXN];

	public static void main(String[] args) throws IOException {
		n = nextInt();
		k = nextInt();
		for (int i = 0; i < n; i++) {
			arr[i] = nextInt();
		}
		long sum = 0;
		for (int i = 0, max, min; i < n-k+1; ++i) {
			max = Integer.MIN_VALUE;
			min = Integer.MAX_VALUE;
			for (int j = i; j < i+k; ++j) {
				max = Math.max(arr[j], max);
				min = Math.min(arr[j], min);
			}
			sum += (max - min);
		}
		double ans = (double) sum / (n-k+1);
		System.out.printf("%.2f\n", ans);
	}

	public static int nextInt() throws IOException {
		in.nextToken();
		return (int) in.nval;
	}
}

非对称二叉树

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

思路

根据题意,枚举并累加答案即可:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;

public class Main {
	static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
	static StreamTokenizer in = new StreamTokenizer(bf);
	static int n, k, p1, p2, curHeight;
	static int MAXN = 37;
	static long[][] f = new long[MAXN][MAXN];
	static long ans = 0;

	public static void main(String[] args) throws IOException {
		n = nextInt();
		k = nextInt();
		compute();
		System.out.println(ans);
	}

	public static void compute() {
		f[0][0] = 1;
		f[1][1] = 1;
		// 遍历节点数
		for (int node = 2; node <= n; node++) {

			// 左子树的节点数为lCnts,右子树的节点数为rCnts
			for (int lCnts = 0, rCnts; lCnts < node; lCnts++) {
				rCnts = node - lCnts - 1;

				// 左子树的高度为lHeight,右子树的高度为rHeight,
				for (int lHeight = 0; lHeight <= lCnts; lHeight++) {
					for (int rHeight = 0; rHeight <= rCnts; rHeight++) {
						p1 = Math.max(lHeight, rHeight);
						p2 = k * Math.min(lHeight, rHeight);
						if (p1 >= p2) {
							// 当前二叉树的高度
							curHeight = Math.max(lHeight, rHeight) + 1;
							// 有 node 个节点,高度为 curHeight 的非对称二叉树有多少个?
							f[node][curHeight] += f[lCnts][lHeight] * f[rCnts][rHeight];
						}
					}
				}
			}
		}
		// 有 n 个节点,高度为 1 的非对称二叉树有多少个?
		// 有 n 个节点,高度为 2 的非对称二叉树有多少个?
		// ...
		// 有 n 个节点,高度为 n 的非对称二叉树有多少个?
		for (int i = 1; i <= n; i++) {
			ans += f[n][i];
		}
	}

	public static int nextInt() throws IOException {
		in.nextToken();
		return (int) in.nval;
	}
}

数和游戏

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
样例输入

7 7
2 -1 -1 2 -1 -1 2 -1 -1 2 4 -1 2 14 -1 2 19 -1 2 11 -1
2 -1 -1 2 -1 -1 2 21 24 1 1 1 1
2 -1 -1 2 26 18 1 1 1 1 1
2 -1 12 1 1 2 -1 -1 2 -1 3 1 1
2 -1 16 1 1 2 17 -1 2 11 8 1 1
2 -1 28 1 1 1 1 1 2 -1 -1
2 -1 14 1 1 1 1 2 -1 -1 2 -1 -1

样例输出

_ _ _ _ _ _ _
_ _ _ 3 9 7 5
_ _ 6 1 5 4 2
_ 8 4 _ _ 2 1
_ 9 7 _ _ 5 3
_ 7 3 9 8 1 _
_ 2 1 8 3 _ _

在这里插入图片描述
思路

用状态压缩记录10个数的选取方案,每个方案选择的数的长度为len,总和则为sum,对于每个条目,枚举选择状压方案中的哪个数,消掉哪一位之后再进行递归调用,最后判断当前方案是否合法。

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

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

相关文章

【Python爬虫--scrapy+selenium框架】超详细的Python爬虫scrapy+selenium框架学习笔记(保姆级别的,非常详细)

六&#xff0c;selenium 想要下载PDF或者md格式的笔记请点击以下链接获取 python爬虫学习笔记点击我获取 Scrapyselenium详细学习笔记点我获取 Python超详细的学习笔记共21万字点我获取 1&#xff0c;下载配置 ## 安装&#xff1a; pip install selenium## 它与其他库不同…

docker compose完成简单项目部署

1. 项目环境 centos7 docker mysql redis ruoyi项目 ruoyi项目链接&#xff1a;https://gitee.com/y_project/RuoYi-Vue.git 2. 进行项目前后端代码打包 后端打包&#xff1a; 修改mysql连接的相关配置文件 RuoYi-Vue/ruoyi-admin/src/main/resources/application-dru…

软件和系统集成项目确认测试报告的费用需要多少?

确认测试报告 软件和系统集成项目确认测试报告的费用因多种因素而异&#xff0c;包括项目的规模、复杂度、测试范围、测试周期等。第三方软件测试机构价格区间一般是几千到几万不等&#xff0c;还有些会根据建设费用的2-5%进行收费。 一般来说&#xff0c;软件和系统集成项目…

2024年5月架构试题

2024年5月份架构师考试真题完整版 截至2024-5-28 19:24:14已全部收录完成 共75道选择题&#xff0c;5道案例题&#xff0c;4道论文题。题目顺序不分先后。 全网最全的2024年5月份架构师考试真题回忆版&#xff0c;包含答案和解析。 选择题 计算机基础 操作系统调度算法 选先来先…

Linux基本命令的使用(cp mv)

一、cp命令-1 1、CP命令作用&#xff1a;复制一个源文件到目标文件&#xff08;夹&#xff09; 2、 语法&#xff1a;cp [选项] 源文件 目标文件&#xff08;夹&#xff09; ① 复制到文件夹下&#xff0c;则文件名保持不变 ② 复制到文件中&#xff0c;则文件名变更 二、cp命…

基于安卓的虫害识别软件设计--(1)模型训练与可视化

引言 简介&#xff1a;使用pytorch框架&#xff0c;从模型训练、模型部署完整地实现了一个基础的图像识别项目计算资源&#xff1a;使用的是Kaggle&#xff08;每周免费30h的GPU&#xff09; 1.创建名为“utils_1”的模块 模块中包含&#xff1a;训练和验证的加载器函数、训练…

Uniapp发布流程存档

发布成小程序 配置微信小程序的appid 配置小程序的域名 修改静态资源路径为线上路径 发布成H5 配置H5 发行 运行 发布成安卓 基础配置

JS-Lodash工具库

文档&#xff1a;Lodash Documentation orderBy函数&#xff1a;根据条件进行排序 注&#xff1a;第一个是要排序的数组&#xff0c;第二个是根据什么字段进行排序&#xff0c;第三个是排序的方式&#xff08;desc倒序&#xff09; 安装方式&#xff1a;Lodash npm i lodash…

Presto 从提交SQL到获取结果 源码详解(3)

物理执行计划 回到SqlQueryExecution.startExecution() &#xff0c;执行计划划分以后&#xff0c; // 初始化连接&#xff0c;获取Connect 元数据&#xff0c;添加会话&#xff0c;初始ConnectId metadata.beginQuery(getSession(), plan.getConnectors()); // 构建物理执行…

关于MD5

首先还是介绍一下关于md5的基本信息&#xff1a; MD5&#xff08;Message Digest Algorithm 5&#xff09;是一种常用的哈希函数&#xff0c;用于产生128位&#xff08;16字节&#xff09;的哈希值&#xff0c;通常以32个十六进制数字表示。MD5广泛用于计算文件或文本数据的校…

LeetCode-131 分割回文串

LeetCode-131 分割回文串 题目描述解题思路C 代码 题目描述 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串。返回 s 所有可能的分割方案。 示例 1&#xff1a; 输入&#xff1a;s “aab” 输出&#xff1a;[[“a”,“a”,“b”],…

Zynq学习笔记--AXI4-Stream 图像数据从仿真输出到图像文件

目录 1. 简介 2. 构建工程 2.1 Vivado 工程 2.2 TestBench 代码 2.3 关键代码分析 3. VPG Background Pattern ID (0x0020) Register 4. 总结 1. 简介 使用 SystemVerilog 将 AXI4-Stream 图像数据从仿真输出到图像文件 (PPM)。 用到的函数包括 $fopen、$fwrite 和 $f…

vmware esxi虚拟化数据迁移

1、启用esxi的ssh 登录esxi的web界面&#xff0c;选择主机-》操作——》服务——》启动ssh 2.xshell登录esxi 3、找到虚拟机所在目录 blog.csdnimg.cn/direct/d57372536a4145f2bcc1189d02cc7da8.png)#### 3在传输数据前需关闭防火墙服务 查看防火墙状态&#xff1a;esxcli …

Android MediaCodec 简明教程(九):使用 MediaCodec 解码到纹理,使用 OpenGL ES 进行处理,并编码为 MP4 文件

系列文章目录 Android MediaCodec 简明教程&#xff08;一&#xff09;&#xff1a;使用 MediaCodecList 查询 Codec 信息&#xff0c;并创建 MediaCodec 编解码器Android MediaCodec 简明教程&#xff08;二&#xff09;&#xff1a;使用 MediaCodecInfo.CodecCapabilities 查…

【传知代码】双深度学习模型实现结直肠癌检测(论文复现)

前言&#xff1a;在医学领域&#xff0c;科技的进步一直是改变人类生活的关键驱动力之一。随着深度学习技术的不断发展&#xff0c;其在医学影像诊断领域的应用正日益受到关注。结直肠癌是一种常见但危害极大的恶性肿瘤&#xff0c;在早期发现和及时治疗方面具有重要意义。然而…

【VSCode】快捷方式log去掉分号

文章目录 一、引入二、解决办法 一、引入 我们使用 log 快速生成的 console.log() 都是带分号的 但是我们的编程习惯都是不带分号&#xff0c;每次自动生成后还需要手动删掉分号&#xff0c;太麻烦了&#xff01; 那有没有办法能够生成的时候就不带分号呢&#xff1f;自然是有…

C++ 特殊运算符

一 赋值运算符 二 等号作用 三 优先级和结合顺序 四 左值和右值 五 字节数运算符 条件运算符 使用条件运算符注意 逗号运算符 优先级和结合顺序 总结

如何修改开源项目中发现的bug?

如何修改开源项目中发现的bug&#xff1f; 目录 如何修改开源项目中发现的bug&#xff1f;第一步&#xff1a;找到开源项目并建立分支第二步&#xff1a;克隆分支到本地仓库第三步&#xff1a;在本地对项目进行修改第四步&#xff1a;依次使用命令行进行操作注意&#xff1a;Gi…

平衡二叉树的应用举例

AVL 是一种自平衡二叉搜索树&#xff0c;其中任何节点的左右子树的高度之差不能超过 1。 AVL树的特点&#xff1a; 1、它遵循二叉搜索树的一般属性。 2、树的每个子树都是平衡的&#xff0c;即左右子树的高度之差最多为1。 3、当插入新节点时&#xff0c;树会自我平衡。因此…

生信服务器配置选择说明

阿小云整理关于生信云服务器的配置选择攻略&#xff0c;生物信息服务器需要强大的计算能力和大容量存储&#xff0c;超高计算能力可以应对生物数据分析计算&#xff0c;如大规模基因序列比对等&#xff0c;大容量存储可以用来存储各种基因组、蛋白质组等数据。 生信服务器配置选…