当前位置: 首页 > news >正文

第十六届蓝桥杯复盘

文章目录

    • 1.数位倍数
    • 2.IPv6
    • 3.变换数组
    • 4.最大数字
    • 5.小说
    • 6.01串
    • 7.甘蔗
    • 8.原料采购

省赛过去一段时间了,现在复盘下,省赛报完名后一直没准备所以没打算参赛,直到比赛前两天才决定参加,赛前两天匆匆忙忙下载安装了比赛要用的编译器eclipse,当时连编译和运行怎么操作都不知道,平时用的都是idea,就简单熟悉了下输入输出就去比赛了,比赛那天天还没亮,早早出发就去赛点了,赛后也不知ac了多少,结果出来省一等奖进入国赛,这是第一次参加java赛道的,可以说完全没准备,能进国赛靠的是大学打比赛时的基础和运气好,不过大学参加的是cpp组别的,编程语言不一样,但算法思想感觉还是通用的,国赛不打算去参加了,这段时间日夜颠倒,打算出去玩几天缓缓,先去爬个衡山。
在这里插入图片描述

1.数位倍数

【问题描述】
 请问在 1 至 202504(含)中,有多少个数的各个数位之和是 5 的整数倍。例如:5、19、8025 都是这样的数。

思路:统计每个数字的数位总和,判断是否5的倍数进行累加。

代码

import java.util.*;public class Main {private static StreamTokenizer st =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));private static PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));private static int Int() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (int) st.nval;}private static Long Lon() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (long) st.nval;}private static Double Dou() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return st.nval;}private static String Line() {String s = "";try {s = br.readLine();} catch (IOException e) {throw new RuntimeException(e);}return s;}public static void main(String[] args){int ans = 0;for (int i = 1; i <= 202504; i++) {int x = i;int cnt = 0;while (x != 0) {cnt += x % 10;x /= 10;}if (cnt % 5 == 0) {ans++;}}out.println(ans);out.flush();out.close();}
}

答案:40500

2.IPv6

【问题描述】
    小蓝最近在学习网络工程相关的知识。他最近学习到,IPv6 地址本质上是一个 128 位的二进制数,而字符串形式的 IPv6 地址是由被冒号分开的八段 16 进制数组成的,例如,下面每行是一个字符串形式的 IPv6 地址:

0000:0000:0000:0000:0000:0000:0000:0000
0000:0001:0000:0000:0000:0001:0000:0000
0000:0001:00ab:0000:0023:0000:0a00:0e00
0000:0000:00ab:0000:000a:0001:0a00:0e00
0000:0000:00ab:0000:0000:0001:0a00:0e00

其中,每一段最长 4 位,且每一段的前导零都可以去掉(如果 4 位都为 0 需要写成 0)。
另外,IPv6 地址还可以将其中相邻的值为 0 的段合并压缩起来,用两个冒号来表示,不过只能压缩一段。
例如上述地址最短的压缩后的形式分别为

::
0:1::1:0:0
0:1:ab:23:0:a00:e00
::ab:0:a:1:a00:e00
0:0:ab::1:a00:e00

小蓝想知道,所有 IPv6 地址的最短压缩形式的长度的和为多少?由于答案很大(甚至超过了 128 位二进制整数的范围),请填写答案时填写这个总和除以10^9+7的余数。
    
思路: dfs+组合数学,先通过dfs 生成段长度组合,每个段的长度a[i]可取0-4,再计算每段的种类数15×16^(len-1)(15表示非 0 首字符数,16^(len-1)为后面字符数),IPv6码总种类数等于所有段种类数的乘积,然后再计算IPV6码压缩后长度=不压缩前长度-压缩的0序列长度,最终将所有情况的长度进行累加。

代码

import java.io.*;public class Main{private static StreamTokenizer st =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));private static PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));private static int Int() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (int) st.nval;}private static Long Lon() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (long) st.nval;}private static Double Dou() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return st.nval;}private static String Line() {String s = "";try {s = br.readLine();} catch (IOException e) {throw new RuntimeException(e);}return s;}private static final int MOD = 1000000007;private static final int N = 8;private static int[] a = new int[N + 1];private static long[] fact = new long[5];private static long ans = 0;public static void main(String[] args) {// 初始化16的幂次数组fact[0] = 1;for (int i = 1; i < 5; i++) {fact[i] = fact[i - 1] * 16 % MOD;}dfs(1);System.out.println(ans);}//dfs生成所有可能的段长度组合private static void dfs(int x) {if (x == N + 1) {// 计算当前组合的总种类数和长度long sum = 1;for (int i = 1; i <= N; i++) {int len = a[i];if (len != 0) {// 计算当前段的种类数:(16-1) * 16^(len-1)sum = sum * fact[len - 1] % MOD;sum = sum * 15 % MOD;}}// 计算当前组合的长度int currentLength = getLength();sum = sum * currentLength % MOD;ans = (ans + sum) % MOD;return;}// 枚举当前段的长度(0-4)for (int i = 0; i <= 4; i++) {a[x] = i;dfs(x + 1);}}//计算当前段组合压缩后的IPv6码长度private static int getLength() {int len = 0; for (int i = 1; i <= N; i++) {if (a[i] == 0) {len++; // 0段计为1个字符} else {len += a[i]; // 非0段计为实际长度}}len += 7; int maxCompress = 0;int left = -1; // 连续0段的左边界for (int right = 1; right <= N; right++) {if (a[right] == 0) {if (left == -1) {left = right; }// 计算当前连续0段的可压缩长度int currentCompress;if (right == N) { if (left == 1) { // 全0压缩currentCompress = 2 * (right - left) - 1;} else {currentCompress = 2 * (right - left);}} else if (left == 1) {currentCompress = 2 * (right - left);} else { // 中间位置的连续0段currentCompress = 2 * (right - left) + 1;}maxCompress = Math.max(maxCompress, currentCompress);} else {left = -1; // 遇到非0段,重置左边界}}return len - maxCompress; // 总长度减去最大压缩长度}
}

答案:905307083

3.变换数组

【问题描述】
    输入一个数组 a ,包含有 n 个元素 a1,a2,…,an。对这个数组进行 m 次变换,每次变换会将数组 a 中的每个元素 ai 转换为 ai · bitCount(ai)。其中 bitCount(x) 表示数字 x 的二进制表示中 1 出现的次数,例如 bitCount(3)=2,因为 3 的二进制表示为 11,其中 1 出现了两次。
    请输出变换之后的数组内容。
【输入格式】
    输入的第一行包含一个正整数 n ,表示数组 a 中的元素个数。
    第二行包含 n 个整数 a1,a2,…,an,相邻整数之间使用一个空格分隔。
    第三行包含一个整数 m,表示变换次数。
【输出格式】
    输出一行,包含 n 个整数,相邻整数之间使用一个空格分隔,表示变换之后得到的数组 a。
【样例输入】

2
5 7
2

【样例输出】

20 63

思路:计算每个元素对应二进制中1的个数,进行相乘即可。

代码

import java.io.*;
import java.util.*;public class Main {private static StreamTokenizer st =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));private static PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));private static int Int() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (int) st.nval;}private static Long Lon() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (long) st.nval;}private static Double Dou() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return st.nval;}private static String Line() {String s = "";try {s = br.readLine();} catch (IOException e) {throw new RuntimeException(e);}return s;}static final int N = 1010;static int n, m;static int[] a = new int[N];// 计算数字二进制中1的个数static int count(int x) {int cnt = 0;while (x != 0) {cnt += x % 2;x /= 2;}return cnt;}public static void main(String[] args) {n = Int();for (int i = 1; i <= n; i++) {a[i] = Int();}m = Int();while (m-- > 0) {for (int i = 1; i <= n; i++) {a[i] *= count(a[i]);}}for (int i = 1; i <= n; i++) {out.print(a[i] + " ");}out.flush();out.close();}
}

4.最大数字

【问题描述】
我们有 n 个连续的整数 1,2,3,…,n,可以自由排列它们的顺序。
然后,我们把这些数字转换成二进制表示,按照排列顺序拼接形成一个新的二进制数。
我们的目标是让这个二进制数的值最大,并输出这个二进制对应的十进制表示。
【输入格式】
    输入一行包含一个正整数 n 。
【输出格式】
    输出一行包含一个整数表示答案。
【样例输入】

3

【样例输出】

30

【样例说明】
1 的二进制为 1;2 的二进制为 10;3 的二进制为 11;其组成的最大的二进制数字为 11110,对应的十进制数字为 30。

思路:自定义排序+大数运算,将1 − n 所有数的二进制放入集合后进行排序,然后对排序后的二进制字符串从后往前进行运算转换成10进制。

代码

import java.io.*;
import java.math.BigInteger;
import java.util.*;public class Main {private static StreamTokenizer st =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));private static PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));private static int Int() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (int) st.nval;}private static Long Lon() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (long) st.nval;}private static Double Dou() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return st.nval;}private static String Line() {String s = "";try {s = br.readLine();} catch (IOException e) {throw new RuntimeException(e);}return s;}public static void main(String[] args) {int n = Int();List<String> list = new ArrayList<>();for (int i = 1; i <= n; ++i) {list.add(itos(i));}Collections.sort(list,new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return (o1 + o2).compareTo(o2 + o1) > 0 ? 1 : -1;}});StringBuilder sb = new StringBuilder();for (int i = list.size() - 1; i >= 0; --i) {sb.append(list.get(i));}BigInteger sum = new BigInteger("0");BigInteger d = new BigInteger("1");int len = sb.length();for (int i = len - 1; i >= 0; --i) {if (sb.charAt(i) == '1') {sum = sum.add(d);}d = d.multiply(new BigInteger("2"));}out.println(sum);out.flush();out.close();}public static String itos(int n) {StringBuilder sb = new StringBuilder();while (n != 0) {sb.append(n % 2);n /= 2;}return sb.reverse().toString();}
}

5.小说

【问题描述】

小蓝是一位网络小说家。现在他正在撰写一部新的推理小说,这部小说有 n 个不同的人物。

小说的每一章都有以下三种情节的一种:

A 发现 B 不知道真相。
A 发现 B 知道真相。
A 知道了真相。

为了保证读者的协调和新鲜感,小蓝的小说还要满足以下要求:

B 发现 A 不知道真相”不能在 “A 知道了真相”后。
“B 发现 A 知道真相”不能在 “A 知道了真相”前。
“B 发现 A 不知道真相”不能在 “B 发现 A 知道真相”后。
相邻的两章情节类型不同,例如如果第一章是 A 发现 B 不知道真相那么第二章就不能是 C 发现 D 不知道真相。
完全相同的情节不能出现两次。

现在小蓝希望知道,他最多能写多少章。
输入的第一行包含一个正整数 n,表示小说人数。
输入

2

输出

6

思路:对于 n 个角色,当 n=1 时,最多可写章节数为为 1;当 n≥2 时,答案为2n^2−3n+4.

分为以下几种情况:
相邻角色:假设角色甲刚知真相,下一个知真相的是角色乙
情况1:除乙外的n−1个角色发现乙不知道真相(共n−1次)
情况2:除甲外的n−1个角色发现甲知道真相(共n−1次)
每对相邻角色有2(n−1)种可能,共n−1对相邻角色,总共有2(n−1)2个情节。
知真相的情况:
情况3:每个角色知道真相对应1个情节,共n个情节
边界处理:
情况4
第一个角色知真相前:只能有情况1
最后一个角色知真相后:只能有情况2,所以边界总共2个情节,最终2n^23n+4

代码

import java.io.*;
import java.util.*;public class Test2 {private static StreamTokenizer st =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));private static PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));private static int Int() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (int) st.nval;}private static Long Lon() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (long) st.nval;}private static Double Dou() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return st.nval;}private static String Line() {String s = "";try {s = br.readLine();} catch (IOException e) {throw new RuntimeException(e);}return s;}public static void main(String[] args) {long n= Lon();if(n==1){out.println(1);}else{out.println(2*n*n-3*n+4);}out.flush();out.close();}
}

6.01串

【问题描述】
    给定一个由 0,1,2,3…的二进制表示拼接而成的长度无限的 01 串。其前若干位形如 011011100101110111… 。请求出这个串的前 x 位里有多少个 1 。
【输入格式】
    输入的第一行包含一个正整数 x 。
【输出格式】
    输出一行包含一个整数表示答案。
【样例输入】

7

【样例输出】

5

思路:分段统计+位运算,将自然数(0,1,2,3,…)的二进制拼接而成的01 串分为两段处理,分别是前面的完整段和后面的不完整段,先计算有多少个完整的自然数段被完全包含在前x位中,再处理剩余部分,对最后一个不完整的自然数段,统计其中前mod位内的1的个数。

代码

import java.io.*;
import java.util.*;public class Test2 {private static StreamTokenizer st =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));private static PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));private static int Int() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (int) st.nval;}private static Long Lon() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (long) st.nval;}private static Double Dou() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return st.nval;}private static String Line() {String s = "";try {s = br.readLine();} catch (IOException e) {throw new RuntimeException(e);}return s;}public static void main(String[] args) {long x = Lon();x--;long res = 0;long i;for (i = 0; ; i++) {long term = (i + 1) * (1L << i);if (x < term) break;x -= term;res += (1L << i);}res += x / (i + 1);long mod = x % (i + 1);long sumResult = getSum(res);long popResult = popCount(res + 1 >> (int) (Math.log(res + 1) / Math.log(2)) - (int) mod + 1);out.println(sumResult + popResult);out.flush();out.close();}//计算二进制中1的个数private static long popCount(long x) {long res = 0;while (x != 0) {res += x & 1;x >>>= 1;}return res;}// 计算所有自然数二进制中1的总个数private static long getSum(long x) {long res = 0;long cnt = 0;x++; // 转换为闭区间[1, x]while (x != 0) {if ((x & 1) != 0) {// 计算当前位为1时的贡献res += (cnt * (1L << (cnt - 1))) + ((1L << cnt) * popCount(x >> 1));}x >>>= 1;cnt++;}return res;}
}

7.甘蔗

【问题描述】
    小蓝种了一排甘蔗,甘蔗共 n 根,第 i 根甘蔗的高度为 ai 。小蓝想砍一些甘蔗下来品尝,但是他有强迫症,不希望甘蔗的高度显得乱糟糟的。具体来说,他给出了一个大小为 m 的整数集合 B = {b1,b2,…,bm} ,他希望在砍完甘蔗后,任意两根相邻的甘蔗之间的高度差 |ai - ai+1| 都要在这个集合 B 中。小蓝想知道他最少需要砍多少根甘蔗(对于高度为 h 的甘蔗,他可以将其砍成 x 高度的甘蔗,x ∈{0,1,2,…,h - 1})。
【输入格式】
    输入的第一行包含两个正整数 n,m,用一个空格分隔。
    第二行包含 n 个正整数 a1,a2,…,an ,相邻整数之间使用一个空格分隔。
    第三行包含 m 个正整数 b1,b2,…,bm ,相邻整数之间使用一个空格分隔。
【输出格式】
    输出一行包含一个整数表示答案。如果不能满足条件,输出 -1 。
【样例输入】

6 3
6 7 3 4 9 12
2 3 5

【样例输出】

2

【样例说明】

其中一种方案:将 a2 砍为 3,再将 a3 砍为 1。

思路:动态规划,先确定dp表达式, dp[i][j]表示第i根甘蔗在高度为 j时,符合条件时最少需要砍多少根甘蔗,然后确定状态转移方程式,对于每根甘蔗的高度 j 是由前一根甘蔗的 j-b[k] 和 j+b[k] 转移过来,但需要注意这两个状态的高度必须在前一根甘蔗的高度范围内,然后进行初始化,当第一根甘蔗高度为a[1]时dp[1][a[1]] = 0,高度为i (i<a[1])时 dp[1][i] = 1,其余初始化为无穷大。

代码

import java.io.*;
import java.util.*;public class Test2 {private static StreamTokenizer st =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));private static PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));private static int Int() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (int) st.nval;}private static Long Lon() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (long) st.nval;}private static Double Dou() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return st.nval;}private static String Line() {String s = "";try {s = br.readLine();} catch (IOException e) {throw new RuntimeException(e);}return s;}public static void main(String[] args) {int n =Int();int m =Int();int[] a = new int[n + 1];int[] b = new int[m + 1];for (int i = 1; i <= n; i++) {a[i] = Int();}for (int i = 1; i <= m; i++) {b[i] = Int();}int[][] dp = new int[n + 1][1001];for(int i = 0;i <= n; ++i){for(int j = 0; j <= 1000; ++j){dp[i][j] = Integer.MAX_VALUE/2;}}dp[1][a[1]] = 0;for (int i = 0; i < a[1]; ++i) {dp[1][i] = 1;}for (int i = 2; i <= n; ++i) {for (int j = 0; j <= a[i]; ++j) {for (int k = 1; k <= m; ++k) {if (j == a[i]) {if (j - b[k] >= 0) dp[i][j] = Math.min(dp[i - 1][j - b[k]], dp[i][j]);if (j + b[k] <= a[i - 1]) dp[i][j] = Math.min(dp[i - 1][j + b[k]], dp[i][j]);} else {if (j - b[k] >= 0) dp[i][j] = Math.min(dp[i - 1][j - b[k]]+1, dp[i][j]);if (j + b[k] <= a[i - 1]) dp[i][j] = Math.min(dp[i - 1][j + b[k]] + 1, dp[i][j]);}}}}int res = dp[n][0];for (int i = 1; i <= a[n]; ++i) {res = Math.min(res, dp[n][i]);}out.println(res == Integer.MAX_VALUE/2 ? -1 : res);out.flush();out.close();}
}

8.原料采购

小蓝负责一家工厂的原料采购。

工厂有一辆运货卡车,其容量为 m。

工厂附近的采购点都在同一条路的同一方向上,一共有 n 个,每个采购点和工厂的距离各不相同。其中,第 i 个采购点的价格为 ai​, 库存为 bi​, 距离为 ci​。

卡车每行驶一单位长度的路径就需要额外花费 o。(返程没有花费,你也可以认为 o 实际是行驶两单位长度的花费)

请计算将卡车装满最少需要花费多少钱,如果没有任何方案可以装满请输出 −1。
输入格式

输入的第一行包含三个正整数 n,m,o,相邻整数之间使用一个空格分隔。

接下来 n 行,每行包含三个正整数 ai​,bi​,ci​ 表示一个采购点,相邻整数之间使用一个空格分隔。
输出格式

输出一行包含一个整数表示答案,即装满卡车所需的最小花费。
输入输出样例

输入

3 5 1
99 9 1
3 4 99
1 2 190

输出

201

思路:贪心+优先队列,使用最大堆将采购点的原料按价格从高到低排序,先从前到后遍历原料装入卡车,当卡车装满后,将遍历到原料的价格与最大堆中堆顶原料的最高价格进行比较,若当前价格低于堆顶原料,则替换堆顶原料,更新总费用,并记录以当前点为最远距离的总费用。

代码

import java.io.*;
import java.util.*;public class Main {private static StreamTokenizer st =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));private static PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));private static int Int() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (int) st.nval;}private static Long Lon() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (long) st.nval;}private static Double Dou() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return st.nval;}private static String Line() {String s = "";try {s = br.readLine();} catch (IOException e) {throw new RuntimeException(e);}return s;}static final int MAXN = 1000005;static final long INF = (long) 3e18;static int n, m, o;static long[] a = new long[MAXN];static long[] b = new long[MAXN];static long[] c = new long[MAXN];static long cost, use, sum;static long ans = INF;static class Node implements Comparable<Node> {long price;long wei;public Node(long price, long wei) {this.price = price;this.wei = wei;}@Overridepublic int compareTo(Node x) {return Long.compare(x.price, this.price); // 大顶堆}}public static void main(String[] args) {n = Int();m = Int();o = Int();for (int i = 1; i <= n; i++) {a[i] = Lon();b[i] = Lon();c[i] = Lon();use += b[i];}if (use < m) {out.println(-1);return;}PriorityQueue<Node> q = new PriorityQueue<>();for (int i = 1; i <= n; i++) {if (cost + b[i] <= m) {q.offer(new Node(a[i], b[i]));cost += b[i];sum += (a[i] * b[i]);} else {if (cost < m) {long delta = m - cost;q.offer(new Node(a[i], delta));b[i] -= delta;sum += a[i] * delta;cost = m;}while (!q.isEmpty() && b[i] > 0) {Node u = q.poll();if (u.price <= a[i]) {q.offer(u);break;}if (b[i] >= u.wei) {q.offer(new Node(a[i], u.wei));b[i] -= u.wei;sum -= (u.price - a[i]) * u.wei;} else {q.offer(new Node(a[i], b[i]));q.offer(new Node(u.price, u.wei - b[i]));sum -= (u.price - a[i]) * b[i];b[i] = 0;}}ans = Math.min(ans, sum + c[i] * o);}}out.println(ans);out.flush();out.close();}
}

相关文章:

第十六届蓝桥杯复盘

文章目录 1.数位倍数2.IPv63.变换数组4.最大数字5.小说6.01串7.甘蔗8.原料采购 省赛过去一段时间了&#xff0c;现在复盘下&#xff0c;省赛报完名后一直没准备所以没打算参赛&#xff0c;直到比赛前两天才决定参加&#xff0c;赛前两天匆匆忙忙下载安装了比赛要用的编译器ecli…...

深度学习---模型预热(Model Warm-Up)

一、基本概念与核心定义 模型预热是指在机器学习模型正式训练或推理前&#xff0c;通过特定技术手段使模型参数、计算图或运行环境提前进入稳定状态的过程。其本质是通过预处理操作降低初始阶段的不稳定性&#xff0c;从而提升后续任务的效率、精度或性能。 核心目标&#xf…...

python:pymysql概念、基本操作和注入问题讲解

python&#xff1a;pymysql分享目录 一、概念二、数据准备三、安装pymysql四、pymysql使用&#xff08;一&#xff09;使用步骤&#xff08;二&#xff09;查询操作&#xff08;三&#xff09;增&#xff08;四&#xff09;改&#xff08;五&#xff09;删 五、关于pymysql注入…...

科普:极简的AI乱战江湖

本文无图。 大模型 ‌2022年2月&#xff0c;‌文生图应用的鼻祖Midjourney上线。 ‌2022年8月&#xff0c;‌开源版的Midjourney&#xff0c;也就是Stable Diffusion上线。 2022年11月30日‌&#xff0c;OpenAI正式发布ChatGPT-3.5。 此后&#xff0c;不断有【大模型】面世&…...

养生指南:解锁健康生活新方式

一、饮食&#xff1a;精准搭配&#xff0c;科学滋养 饮食以 “少加工、多天然” 为核心。早餐选择希腊酸奶搭配蓝莓与一把混合坚果&#xff0c;富含蛋白质与抗氧化成分&#xff1b;午餐用藜麦饭搭配香煎龙利鱼和彩椒炒芦笋&#xff0c;营养全面且低脂&#xff1b;晚餐则是山药…...

Dolphinscheduler执行工作流失败,后台报duplicate key错误

背景 现场童鞋发来一张图如下 我很懵逼&#xff0c;不知道出了啥问题&#xff0c;在聊天工具上聊了10m还不知道啥&#xff0c;干脆就搞个腾讯会议&#xff08;在此感谢腾讯爸爸免费会议&#xff09;。哦&#xff0c;现场临时搭建了dolphinscheduler&#xff0c;然后导入工作流…...

【Vue】路由2——编程式路由导航、 两个新的生命周期钩子 以及 路由守卫、路由器的两种工作模式

目录 一、路由的push 与 replace切换 二、编程式路由导航 三、缓存路由组件 四、新增的两个生命周期钩子 五、路由守卫 5.1 前置路由守卫 5.2 后置路由守卫 5.3 独立路由守卫 5.4 组件内 路由守卫 六、路由器的两种工作模式 6.1 hash模式 6.2 history模式 6.3 V…...

VDC、SMC、MCU怎么协同工作的?

华为视频会议系统中&#xff0c;VDC&#xff08;终端控制&#xff09;、SMC&#xff08;会话管理&#xff09;、MCU&#xff08;媒体处理&#xff09; 通过分层协作实现端到端会议管理&#xff0c;其协同工作机制可总结为以下清晰架构&#xff1a; 1. 角色分工 组件核心职责类…...

ETL数据集成产品选型需要关注哪些方面?

ETL&#xff08;Extract&#xff0c;Transform&#xff0c;Load&#xff09;工具作为数据仓库和数据分析流程中的关键环节&#xff0c;其选型对于企业的数据战略实施有着深远的影响。谷云科技在 ETL 领域耕耘多年&#xff0c;通过自身产品的实践应用&#xff0c;对 ETL 产品选型…...

DriveGenVLM:基于视觉-语言模型的自动驾驶真实世界视频生成

《DriveGenVLM: Real-world Video Generation for Vision Language Model based Autonomous Driving》2024年8月发表&#xff0c;来自哥伦比亚大学的论文。 自动驾驶技术的进步需要越来越复杂的方法来理解和预测现实世界的场景。视觉语言模型&#xff08;VLM&#xff09;正在成…...

【达梦数据库】过程、函数、包头和包体详解零基础

目录 背景参考链接解释包头包体 背景 最近遇到关于包头和包体的问题&#xff0c;学习并记录 参考链接 参考链接: oracle的过程、函数、包头和包体详解零基础 解释 包头主要用于定义接口&#xff0c;包体主要用以实现包体中声明的存储过程、函数等。 包头 包体...

HarmonyOS开发样式布局

个人简介 &#x1f468;‍&#x1f4bb;‍个人主页&#xff1a; 魔术师 &#x1f4d6;学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全栈发展 &#x1f6b4;个人状态&#xff1a; 研发工程师&#xff0c;现效力于政务服务网事业 &#x1f1e8;&#x1f1f3;人生格言&…...

SpringCloud——EureKa

目录 1.前言 1.微服务拆分及远程调用 3.EureKa注册中心 远程调用的问题 eureka原理 搭建EureKaServer 服务注册 服务发现 1.前言 分布式架构&#xff1a;根据业务功能对系统进行拆分&#xff0c;每个业务模块作为独立项目开发&#xff0c;称为服务。 优点&#xff1a; 降…...

【力扣刷题】LeetCode763-划分字母区间

文章目录 1. LeetCode763_划分字母区间 1. LeetCode763_划分字母区间 题目链接&#x1f517; &#x1f427;解题思路&#xff1a; 区间合并 题目中这句话很关键“我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。” 你这句话你可以理解为 把…...

使用for循环和字典功能,统计字符出现在一个英文句子中的次数(python)

本题目要求写出一段代码实现输入一个英文句子后&#xff0c;统计句子中各个字符&#xff08;不区分大小写,包含空格和标点符号&#xff09;出现的次数。 输入格式: 请例如&#xff1a;输入 Life is short,we need Python. 。 输出格式: 对每一个字符输出对应的出现次数&…...

带你搞懂@Valid和@Validated的区别

前言 有参数传递的地方都少不了参数校验。在实际开发过程中&#xff0c;参数校验是保证程序健壮性的重要环节&#xff0c;前端的参数校验是为了用户体验&#xff0c;后端的参数校验是为了安全。试想一下&#xff0c;如果在 Controller 层中没有经过任何校验的参数通过 Service层…...

大数据hadoop小文件处理方案

Hadoop处理小文件问题的解决方案可分为存储优化、处理优化和架构优化三个维度,以下是综合技术方案及实施要点: 一、存储层优化方案 1.文件合并技术 离线合并:使用hadoop fs -getmerge命令将多个小文件合并为大文件并重新上传; MapReduce合并:开发专用MR…...

安装NASM

安装NASM 注意:这篇文章在librdkafka安装系列,不需要参考,仅为了记录而写,请不要参考,后续编译openssl的时候,可以使用参数no-asm,不影响整个的编译步骤。这里主要作为记录帖子。 本篇是Windows系统编译Qt使用的kafka(librdkafka)系列可以不参考的一篇,编译librdkaf…...

RabbitMQ-高级

RabbitMQ-高级 文章目录 RabbitMQ-高级前言&#xff1a;消息可靠性问题1.生产者可靠性1.生产者重连2.生产者确认机制3.生产者代码实现原理 2.MQ的可靠性1.数据持久化2.LazyQueue 3.消费者可靠性1.消费者确认机制1.确认机制2.确认功能 2.失败重试机制1.开启失败重试机制2.多次失…...

深入解析Spring Boot与Kafka集成:构建高效消息驱动微服务

深入解析Spring Boot与Kafka集成&#xff1a;构建高效消息驱动微服务 引言 在现代微服务架构中&#xff0c;消息队列扮演着至关重要的角色&#xff0c;而Apache Kafka凭借其高吞吐量、低延迟和可扩展性&#xff0c;成为了许多企业的首选。本文将详细介绍如何在Spring Boot应用…...

Unreal Engine: Windows 下打包 AirSim项目 为 Linux 平台项目

环境&#xff1a; Windows: win10, UE4.27, Visual Studio 2022 Community.Linux: 22.04 windows环境安装教程&#xff1a; 链接遇到的问题&#xff08;问题&#xff1a;解决方案&#xff09; 点击Linux打包按钮&#xff0c;跳转至网页而不是执行打包流程&#xff1a;用VS打开项…...

【图像大模型】FLUX.1-dev:深度解析与实战指南

FLUX.1-dev&#xff1a;深度解析与实战指南 一、引言二、模型架构与技术原理&#xff08;一&#xff09;模型架构&#xff08;二&#xff09;Rectified Flow 技术&#xff08;三&#xff09;指导蒸馏&#xff08;Guidance Distillation&#xff09; 三、项目运行方式与执行步骤…...

mariadb 升级 (通过yum)

* 注意下 服务名, 有的服务器上是mysql,有的叫mariadb,mysqld的 #停止 systemctl stop mysql #修改源 vi /etc/yum.repos.d/MariaDB.repo baseurl http://yum.mariadb.org/11.4/centos7-amd64 #卸载 yum remove mysql #安装 yum install MariaDB-server galera-4 MariaDB-…...

Flink 非确定有限自动机NFA

Flink 是一个用于状态化计算的分布式流处理框架&#xff0c;而非确定有限自动机&#xff08;NFA, Non-deterministic Finite Automaton&#xff09;是一种在计算机科学中广泛使用的抽象计算模型&#xff0c;常用于正则表达式匹配、模式识别等领域。 Apache Flink 提供了对 NFA…...

Profinet转Ethernet IP主站网关:点燃氢醌生产线的智慧之光!

案例分享&#xff1a;转角指示器和Profinet转EthernetIP网关的应用 在现代工业自动化中&#xff0c;设备和系统之间的高效通信至关重要。最近&#xff0c;我们在某大型化工企业的生产线上实施了一个项目&#xff0c;旨在通过先进的设备和通信技术提高生产效率和安全性。该项目…...

动态IP技术在跨境电商中的创新应用与战略价值解析

在全球化4.0时代&#xff0c;跨境电商正经历从"流量红利"向"技术红利"的深度转型。动态IP技术作为网络基础设施的关键组件&#xff0c;正在重塑跨境贸易的运营逻辑。本文将从技术架构、应用场景、创新实践三个维度&#xff0c;揭示动态IP如何成为跨境电商突…...

WEB安全--SQL注入--Oracle注入

一、Oracle知识点了解 1.1、系统变量与表 版本号&#xff1a;SELECT * FROM V$VERSION 用户名&#xff1a;USER、SYS_CONTEXT(USERENV,SESSION_USER) 库名&#xff1a;ALL_USERS、USER_USERS、DBA_USERS 表名&#xff1a;ALL_TABLES、DBA_TABLES、USER_TABLES 字段名&…...

Unity预制体变体(Prefab Variants)、接口(Interface)、抽象类(Abstract Class)、枚举(Enumeration)

一、预制体变体&#xff08;Prefab Variants&#xff09; 预制体变体是什么&#xff1f; 预制体变体是指从同一个基础预制体派生出来的不同版本的预制体。这些变体可以包含不同的组件配置、属性值、子对象或者行为&#xff0c;但它们共享一些共同的基础结构和特性。通过创建预…...

pymol包安装和使用

PyMOL 是一款分子可视化软件&#xff0c;而pymol则是其对应的 Python 包&#xff0c;借助它能够实现对 PyMOL 的编程控制。 主要功能 分子结构可视化&#xff1a;支持展示蛋白质、核酸、小分子等多种分子的 3D 结构。自定义渲染&#xff1a;可对分子的表示方式、颜色以及光照…...

【学习笔记】机器学习(Machine Learning) | 第七章|神经网络(2)

机器学习&#xff08;Machine Learning&#xff09; 简要声明 基于吴恩达教授(Andrew Ng)课程视频 BiliBili课程资源 文章目录 机器学习&#xff08;Machine Learning&#xff09;简要声明 神经网络在图像识别及手写数字识别中的应用一、神经网络在图像识别中的应用&#xff0…...

【神经网络与深度学习】model.eval() 模式

引言 在深度学习模型的训练和推理过程中&#xff0c;不同的模式设置对模型的行为和性能有着重要影响。model.eval() 是 PyTorch 等深度学习框架中的关键操作&#xff0c;它用于将模型切换到评估模式&#xff08;evaluation mode&#xff09;&#xff0c;确保模型在测试和推理阶…...

ASIC和FPGA,到底应该选择哪个?

ASIC和FPGA各有优缺点。 ASIC针对特定需求&#xff0c;具有高性能、低功耗和低成本&#xff08;在大规模量产时&#xff09;&#xff1b;但设计周期长、成本高、风险大。FPGA则适合快速原型验证和中小批量应用&#xff0c;开发周期短&#xff0c;灵活性高&#xff0c;适合初创企…...

JavaScript 性能优化实战指南

JavaScript 性能优化实战指南 前言 随着前端应用复杂度提升&#xff0c;JavaScript 性能瓶颈日益突出。高效的性能优化不仅能提升用户体验&#xff0c;还能增强系统稳定性和可维护性。本文系统梳理了 JavaScript 性能优化的核心思路、常见场景和实战案例&#xff0c;结合代码…...

Unity3D HUD UI性能优化方案

前言 在Unity3D中实现高性能的HUD UI需要综合考虑渲染效率、CPU开销和内存管理。以下是分步的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&#xff0c;大家可以点击进来一起交流一下开发经验呀&#xff01; 1. 降低Draw Call&#xff1a;合批与图集 …...

晶圆Map图芯片选择显示示例

效果 列表中有四个Mark点,需求是选择某一个点时在Map图中区别显示出来。 实现思路: 根据DataGrid 的行选择 SelectionChanged事件,先循环所有Mark点清除Rectangle的边框大小,再获取选择的芯片,设置Rectangle的边框大小和颜色。 示例代码 1.UI代码 <DataGrid Grid.…...

HarmonyOS实战:自定义时间选择器

前言 最近在日常鸿蒙开发过程中&#xff0c;经常会使用一些时间选择器&#xff0c;鸿蒙官方提供的时间选择器满足不了需求&#xff0c;所以自己动手自定义一些经常会使用到的时间选择器&#xff0c;希望能帮到你&#xff0c;建议点赞收藏&#xff01; 实现效果 需求分析 默认…...

汽车零部件的EMI抗扰性测试

写在前面 本系列文章主要讲解汽车零部件的EMI抗扰性测试的相关知识,希望能帮助更多的同学认识和了解汽车零部件的EMI抗扰性测试。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 1. 背景介绍 多年以来,电磁干扰(EMI)效应一直是现代电子控制系统中备受关注的一个问题。…...

新能源汽车充电桩管理平台如何利用智慧技术优化资源配置问题?

在“双碳”目标的推动下&#xff0c;我国新能源汽车市场迅猛发展&#xff0c;但充电基础设施的供需失衡问题日益突出。部分区域充电桩利用率低下&#xff0c;而核心城区、高速服务区等场景却面临“一桩难求”的困境。智慧技术的引入为解决这一难题提供了新思路。通过物联网&…...

【zookeeper】--部署3.6.3

文章目录 下载解压创建data和logs配置文件1)创建目录并且编辑 zoo.cfg2)接下来将 node01 的 ZooKeeper 所有文件拷贝至 node02 和 node03。推荐从 node02 和 node03 拷贝4&#xff09;最后 vim /etc/profile 配置环境变量&#xff0c;环境搭建结束。配完环境变量后 source /etc…...

[低代码] 明道云调用本地部署 Dify 的进阶方法

在低代码开发平台明道云中,集成外部智能服务(如 Dify)可以极大地提升自动化和智能化能力。之前我们介绍了使用“发送自定义 API”节点直接调用本地部署的 Dify 服务的方法,虽然简单直观,但该方式存在一些限制,比如无法设置 Timeout、逻辑复用性差等问题。 为了构建更稳定…...

ICU库交叉编译

交叉编译步骤 Step 1: 先进行本机编译 ./runConfigureICU Linux/gccmake Step 2: 执行交叉编译 source /opt/fsl-imx-fb/4.14-sumo/environment-setup-cortexa9hf-neon-poky-linux-gnueabimkdir cross_install./configure --disable-samples --disable-tests --prefix/medi…...

永磁同步电机高性能控制算法(22)——基于神经网络的转矩脉动抑制算法为什么低速时的转速波动大?

0. 前言 在之前的知乎上发过一些转矩脉动抑制/谐波电流抑制的算法。例如&#xff1a; https://zhuanlan.zhihu.com/p/24723996895https://zhuanlan.zhihu.com/p/24723996895 这些算法基本上都需要先知道谐波的频率。 重复控制这个算法虽然可以抑制掉某个频率及其所有整数倍的…...

Java大厂面试实战:Spring Boot与微服务场景中的技术点解析

Java大厂面试实战&#xff1a;Spring Boot与微服务场景中的技术点解析 第一轮&#xff1a;基础技术了解 面试官&#xff1a;谢飞机&#xff0c;你好。从简历上看&#xff0c;你熟悉Spring Boot&#xff0c;那我们来聊聊它的核心功能吧。Spring Boot有哪些主要的特性&#xff…...

Pycharm 选择Python Interpreter

你的系统可能有多个 Python 环境&#xff0c;比如&#xff1a; macOS 自带的 /usr/bin/python3 你用 brew install python 安装的 /opt/homebrew/bin/python3 你可能还用了虚拟环境&#xff08;venv 或 conda&#xff09; PyCharm 默认配置可能用的是一个虚拟环境&#xff…...

文件夹如何打包成jar包

应用场景 主要是&#xff1a;比如 maven 引入一个依赖&#xff08;其实就是下载了一个 jar 包&#xff09;&#xff0c;然后需要修改 jar 包里面的某个文件&#xff0c;然后再重新打包成 jar 包&#xff0c;如下图&#xff1a; 使用方法 使用压缩工具打开这个 jar 包&#xf…...

sqli-labs第九关—‘时间盲注

一&#xff1a;判断闭合类型 先按照之前的判断方式判断&#xff0c;发现无论输入什么都显示You are in.......... 可以考虑使用时间盲注&#xff1a; 二&#xff1a;时间盲注Time-based Blind&#xff1a; 1.解释&#xff1a; 通过时间延迟判断结果 2.核心原理&#xff1a…...

10.15 LangChain v0.3重磅升级:Tool Calling技术颠覆大模型工具调用,效率飙升300%!

LangChain v0.3 技术生态与未来发展:支持 Tool Calling 的大模型 关键词:LangChain Tool Calling, 大模型工具调用, @tool 装饰器, ToolMessage 管理, Few-shot Prompting 1. Tool Calling 的技术革新 LangChain v0.3 的工具调用(Tool Calling)功能标志着大模型应用开发进…...

【C++】哈希的概念与实现

1.哈希概念 通过某种函数使元素的存储位置与它的关键码之间能够建立一一映射的关系&#xff0c;可以不经过任何比较&#xff0c;一次直接从表中得到要搜索的元素。 当向该结构中&#xff1a; 插入元素&#xff1a; 根据待插入元素的关键码&#xff0c;以此函数计算出该元素的…...

Spring 代理与 Redis 分布式锁冲突:一次锁释放异常的分析与解决

Spring 代理与 Redis 分布式锁冲突&#xff1a;一次锁释放异常的分析与解决 Spring 代理与 Redis 分布式锁冲突&#xff1a;一次锁释放异常的分析与解决1. 问题现象与初步分析2 . 原因探究&#xff1a;代理机制对分布式锁生命周期的干扰3. 问题复现伪代码4. 解决方案&#xff1…...

vue Element-ui对图片上传和选用时的比例控制

vue Element-ui对图片上传和选用时的比例控制 在后台上传图片和选用已经上传的图片时&#xff0c;往往会因为图片的比例控制不到位导致在客户端渲染时效果差强人意&#xff0c;虽然可以在操作时选择合适的比例上传&#xff0c;但必要的控制还是能完成渲染时良好的体验&#xf…...