第十六届蓝桥杯复盘

文章目录

    • 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();}
}

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

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

相关文章

Manus AI 突破多语言手写识别技术壁垒:创新架构、算法与应用解析

在人工智能领域&#xff0c;手写识别技术作为连接人类自然书写与数字世界的桥梁&#xff0c;一直备受关注。然而&#xff0c;多语言手写识别面临诸多技术挑战&#xff0c;如语言多样性、书写风格差异、数据稀缺性等。Manus AI 作为该领域的领军者&#xff0c;通过一系列创新技术…

25考研经验贴(11408)

声明&#xff1a;以下内容都仅代表个人观点 数学一&#xff08;130&#xff09; 25考研数学一难度介绍&#xff1a;今年数学一整体不难&#xff0c;尤其是选填部分&#xff0c;大题的二型线面和概率论大题个人感觉比较奇怪&#xff0c;其他大题还是比较容易的。.26如何准备&a…

嵌入式软件--stm32 DAY 6 USART串口通讯(下)

1.寄存器轮询_收发字符串 通过寄存器轮询方式实现了收发单个字节之后&#xff0c;我们趁热打铁&#xff0c;争上游&#xff0c;进阶到字符串。字符串就是多个字符。很明显可以循环收发单个字节实现。 然后就是接收字符串。如果接受单个字符的函数放在while里&#xff0c;它也可…

QT使用QXlsx读取excel表格中的图片

前言 读取excel表格中的图片的需求比较小众&#xff0c;QXlsx可以操作excel文档&#xff0c;进行图片读取、插入操作&#xff0c;本文主要分享单独提取图片和遍历表格提取文字和图片。 源码下载 github 开发环境准备 把下载的代码中的QXlsx目录&#xff0c;整个拷贝到所创建…

抽奖相关功能测试思路

1. 抽奖系统功能测试用例设计&#xff08;登录 每日3次 中奖40% 道具兑换码&#xff09; ✅ 功能点分析 必须登录后才能抽奖每天最多抽奖3次抽奖有 40% 概率中奖中奖返回兑换码 ✅ 测试用例设计 编号 用例描述 前置条件 操作 预期结果 TC01 未登录时抽奖 未登录 …

Unity editor文件数UI(支持勾选框)

unity editor文件数&#xff08;支持勾选框&#xff09; 使用的时候new一个box即可 using Sirenix.OdinInspector; using Sirenix.OdinInspector.Editor; using System; using System.Collections; using System.Collections.Generic; using UnityEngine;[Serializable] publ…

RabbitMQ通信模式(Simplest)Python示例

RabbitMQ通信模式-Python示例 0.RabbitMQ官网通信模式1.Simplest(简单)模式1.1 发送端1.2 接收端 0.RabbitMQ官网通信模式 1.Simplest(简单)模式 1.1 发送端 # -*- coding: utf-8 -*- """ Author: xxx date: 2025/5/19 11:30 Description: Simaple简单模…

隨筆20250519 Async+ThreadPoolTaskExecutor⾃定义线程池进阶实战

1.ThreadPoolTaskExecutor线程池 有哪⼏个重要参数&#xff0c; 什么时候会创建线程 1.核心綫程數 查看核心綫程數目是否已經滿&#xff0c;未滿 創建一條綫程 執行任務&#xff0c;已滿負責執行第二部 2.阻塞隊列 查看阻塞隊列是否已經滿&#xff0c;未滿將任務加入阻塞隊列&…

YOLO11解决方案之实例分割与跟踪探索

概述 Ultralytics提供了一系列的解决方案,利用YOLO11解决现实世界的问题,包括物体计数、模糊处理、热力图、安防系统、速度估计、物体追踪等多个方面的应用。 实例分割是一项计算机视觉任务,涉及在像素级别识别和勾勒图像中的单个对象。与只按类别对像素进行分类的语义分割…

VScode各文件转化为PDF的方法

文章目录 代码.py文件.ipynb文本和代码夹杂的文件方法 1:使用 VS Code 插件(推荐)步骤 1:安装必要插件步骤 2:安装 `nbconvert`步骤 3:间接导出(HTML → PDF)本文遇见了系列错误:解决方案:问题原因步骤 1:降级 Jinja2 至兼容版本步骤 2:确保 nbconvert 版本兼容替代…

现代计算机图形学Games101入门笔记(十五)

蒙特卡洛积分 为什么用蒙特卡洛积分&#xff0c;用来做什么&#xff1f;跟黎曼积分区别&#xff0c;黎曼积分是平均分成n等分&#xff0c;取每个小块中间的值取计算每个小块面积&#xff0c;再将n份集合加起来。蒙特卡洛积分就是随机取样&#xff0c;假设随机取样点xi,对应的f…

软件架构之-论高并发下的可用性技术

论高并发下的可用性技术 摘要正文摘要 ;2023年2月,本人所在集团公司承接了长三角地区某省渔船图纸电子化审查系统项目开发,该项目旨在为长三角地区渔船建造设计院、以及渔船审图机构提供一个便捷化的服务平台。在此项目中,我作为项目组成员参与了项目建设工作,并担任系统架…

Q-learning 算法学习

Q-learning是一种经典的无模型、基于价值的算法&#xff0c;它通过迭代更新状态-动作对的Q值&#xff0c;最终找到最优策略。 一 Q-learning的核心思想 1.1目标 学习一个状态-动作价值函数 &#xff0c;表示在状态 s 下执行动作 a 并遵循最优策略后的最大累积奖励。 的核心…

鸿蒙生态崛起:开发者机遇与挑战并存

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 目录 引言 一、何为鸿蒙生态&#xff1f; 二、在鸿蒙生态下开发时遇到的挑战 三、对于鸿蒙生态未…

TCP/IP-——C++编程详解

1. TCP/IP 编程基本概念 TCP&#xff08;传输控制协议&#xff09;&#xff1a;面向连接、可靠的传输层协议&#xff0c;保证数据顺序和完整性。IP&#xff08;网际协议&#xff09;&#xff1a;负责将数据包路由到目标地址。Socket&#xff08;套接字&#xff09;&#xff1a…

Python图像处理基础(三)

Python图像处理基础(三) 文章目录 Python图像处理基础(三)2、计算机色彩(Computer Color)2.5 色彩分辨率2.6 灰度颜色模型2.7 CMYK 颜色模型2.7.1 K 部分2.8 HSL/HSB 颜色模型2、计算机色彩(Computer Color) 2.5 色彩分辨率 人眼可以看到许多不同的颜色,但我们的感知…

Vue路由深度解析:Vue Router与导航守卫

Vue路由深度解析&#xff1a;Vue Router与导航守卫 一、Vue Router基础与安装配置 1. Vue Router核心概念 Vue Router是Vue.js官方的路由管理器&#xff0c;主要功能包括&#xff1a; 嵌套路由映射模块化的路由配置路由参数、查询、通配符细粒度的导航控制自动激活的CSS类链…

前后端分离微服务架构

前后端分离微服务架构 介绍: 前端通过Vue和ElementUI构建界面&#xff0c;使用axios调用后端API。Nginx作为反向代理&#xff0c;将请求路由到Zuul网关。Zuul进行权限验证&#xff08;JWT&#xff09;后&#xff0c;将请求分发到微服务。(身份验证,安全防护(sql注入,xxs跨网站…

iOS 工厂模式

iOS 工厂模式 文章目录 iOS 工厂模式前言工厂模式简单工厂案例场景分析苹果类优点缺点 小结 工厂模式客户端调用**优点****缺点** 抽象工厂模式三个模式对比 前言 笔者之前学习了有关于设计模式的六大原则,之前简单了解过这个工厂模式,今天主要是重新学习一下这个模式,正式系统…

【机器学习】工具入门:飞牛启动Dify Ollama Deepseek

很久没有更新文章了,最近正好需要研究一些机器学习的东西&#xff0c;打算研究一下 difyOllama 以下是基于FN 的dify本地化部署&#xff0c;当然这也可能是全网唯一的飞牛部署dify手册 部署 官方手册&#xff1a;https://docs.dify.ai/en/getting-started/install-self-hos…