【美团笔试题汇总】2023-09-02-美团春秋招笔试题-三语言题解(CPP/Python/Java)

🍭 大家好这里是KK爱Coding ,一枚热爱算法的程序员

✨ 本系列打算持续跟新美团近期的春秋招笔试题汇总~

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

📧 KK这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 KK领取,会在飞书进行同步的跟新。

**

💻听说明天上午要笔美团啦,这里给大家带来一些去年秋招的题目来练练手。

🎉 祝大家明天超常发挥,笔试AK,rp ++++++

**

文章目录

    • 💻听说明天上午要笔美团啦,这里给大家带来一些去年秋招的题目来练练手。
    • 🎉 祝大家明天超常发挥,笔试AK,rp `++++++`
    • 01.LYA的魔法药水
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 02.K 小姐的魔法书
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 03.K小姐的蛋糕店
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 样例解释
      • 数据范围
      • 题解
      • 参考代码
    • 04.LYA的魔法卡牌
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 05.K 小姐的珠宝搭配
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 写在最后
    • 📧 KK这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 KK领取,会在飞书进行同步的跟新。

01.LYA的魔法药水

问题描述

LYA是一位魔法学徒,她正在学习制作魔法药水。一个合格的魔法药水需要满足以下两个条件:

  1. 药水中的材料必须按照一定的顺序排列,材料的魔力值需要严格递增。即对于相邻的两种材料,后一种材料的魔力值必须大于前一种。

  2. 相邻两种材料的魔力值之差也需要严格递增。即对于排序后的任意三种连续的材料,第三种与第二种材料魔力值之差必须大于第二种与第一种材料魔力值之差。

现在LYA准备了一组材料,她想知道这组材料是否可以制作出合格的魔法药水。你能帮助她吗?

输入格式

第一行包含一个正整数 n ( 1 ≤ n ≤ 1 0 5 ) n(1 \leq n \leq 10^5) n(1n105),表示材料的数量。

第二行包含 n n n 个正整数 a 1 , a 2 , … , a n ( 1 ≤ a i ≤ 1 0 9 ) a_1, a_2, \ldots, a_n(1 \leq a_i \leq 10^9) a1,a2,,an(1ai109),表示每种材料的魔力值。

输出格式

如果这组材料可以制作合格的魔法药水,输出 "Yes",否则输出 "No"

样例输入

5
1 3 7 13 21

样例输出

Yes

数据范围

  • 1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^5 1n105
  • 1 ≤ a i ≤ 1 0 9 1 \leq a_i \leq 10^9 1ai109

题解

本题可以通过遍历材料的魔力值数组,同时维护相邻两个材料的魔力值之差来判断是否满足题目要求。

具体步骤如下:

  1. 遍历材料魔力值数组,检查是否满足严格递增,如果不满足直接输出 "No"

  2. 在遍历的过程中,计算相邻两个材料的魔力值之差,并用一个数组 b b b 存储。

  3. 遍历数组 b b b,检查是否满足严格递增,如果不满足直接输出 "No"

  4. 如果遍历完成后没有出现不满足条件的情况,输出 "Yes"

时间复杂度 O ( n ) O(n) O(n),空间复杂度 O ( n ) O(n) O(n)

参考代码

  • Python
n = int(input())
a = list(map(int, input().split()))b = [0] * (n - 1)
for i in range(1, n):if a[i] <= a[i - 1]:print("No")exit()b[i - 1] = a[i] - a[i - 1]for i in range(1, n - 1):if b[i] <= b[i - 1]:print("No")exit()print("Yes")
  • Java
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] a = new int[n];for (int i = 0; i < n; i++) {a[i] = sc.nextInt();}int[] b = new int[n - 1];for (int i = 1; i < n; i++) {if (a[i] <= a[i - 1]) {System.out.println("No");return;}b[i - 1] = a[i] - a[i - 1];}for (int i = 1; i < n - 1; i++) {if (b[i] <= b[i - 1]) {System.out.println("No");return;}}System.out.println("Yes");}
}
  • Cpp
#include <iostream>
#include <vector>using namespace std;int main() {int n;cin >> n;vector<int> a(n);for (int i = 0; i < n; i++) {cin >> a[i];}vector<int> b(n - 1);for (int i = 1; i < n; i++) {if (a[i] <= a[i - 1]) {cout << "No" << endl;return 0;}b[i - 1] = a[i] - a[i - 1];}for (int i = 1; i < n - 1; i++) {if (b[i] <= b[i - 1]) {cout << "No" << endl;return 0;}}cout << "Yes" << endl;return 0;
}

02.K 小姐的魔法书

问题描述

K 小姐是一位热爱收藏古籍的魔法师。她拥有 n n n 本魔法书,每本书都有 m m m 页。

这些魔法书中蕴藏着强大的魔力,每一页都记载着神秘的魔法符号。K 小姐相信,如果从每本书中选取一个符号,并按照从上到下的顺序将它们组合成一个新的咒语,就能够释放出非凡的魔力。

现在,K 小姐想知道能否从这些符号中找到一个 "lyasuki" 的咒语。

输入格式

第一行包含两个整数 n n n m m m ( 1 ≤ n , m ≤ 1000 ) (1 \leq n, m \leq 1000) (1n,m1000),分别表示魔法书的数量和每本书的页数。

接下来 n n n 行,每行一个长度为 m m m 的字符串,表示从上到下每本魔法书的符号。

输出格式

如果能够找到 "lyasuki" 的咒语,则输出 "Yes",否则输出 "No"

样例输入

7 4
lkjh
yqrs
airt
yszx
uvmw
noky
abki

样例输出

Yes

数据范围

  • 1 ≤ n , m ≤ 1000 1 \leq n, m \leq 1000 1n,m1000

题解

本题可以使用贪心的思想来解决。我们可以按照 "lyasuki" 中字符的顺序,从上到下遍历每一本魔法书,看是否能找到对应的字符。

具体做法如下:

  1. "lyasuki" 转换为字符数组 index
  2. 从上到下遍历每本魔法书,用指针 l 表示当前需要匹配的字符在 index 中的位置,用指针 r 表示当前遍历到的魔法书的编号。
  3. 如果当前魔法书包含 index[l] 字符,则 lr 都向后移动一位。
  4. 如果当前魔法书不包含 index[l] 字符,则只将 r 向后移动一位。
  5. 重复步骤 3 和 4,直到 l 到达 index 的末尾或 r 到达最后一本魔法书。
  6. 如果 l 到达了 index 的末尾,说明找到了 "lyasuki" 咒语,输出 "Yes",否则输出 "No"

时间复杂度 O ( n m ) O(nm) O(nm),空间复杂度 O ( n ) O(n) O(n)

参考代码

  • Python
n, m = map(int, input().split())
index = list("lyasuki")
books = [input() for _ in range(n)]l = r = 0
while l < len(index) and r < n:if index[l] in books[r]:l += 1r += 1print("Yes" if l == len(index) else "No")
  • Java
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt(), m = sc.nextInt();char[] idx = "lyasuki".toCharArray();sc.nextLine();String[] books = new String[n];for (int i = 0; i < n; i++) {books[i] = sc.nextLine();}int l = 0, r = 0;while (l < idx.length && r < n) {if (books[r].indexOf(idx[l]) != -1) {l++;}r++;}System.out.println(l == idx.length ? "Yes" : "No");}
}
  • Cpp
#include <iostream>
#include <string>
using namespace std;int main() {int n, m;cin >> n >> m;string idx = "lyasuki";string books[1005];for (int i = 0; i < n; i++) {cin >> books[i];}int l = 0, r = 0;while (l < idx.size() && r < n) {if (books[r].find(idx[l]) != string::npos) {l++;}r++;}cout << (l == idx.size() ? "Yes" : "No") << endl;return 0;
}

03.K小姐的蛋糕店

题目描述

K小姐开了一家蛋糕店,店里有 n n n 种不同口味的蛋糕。每种蛋糕都有一个美味度,第 i i i 种蛋糕的美味度为 a i a_i ai

K小姐想要通过一些操作,使得第一种蛋糕的美味度 a 1 a_1 a1 成为所有蛋糕中最高的。她可以进行以下两种操作:

  1. a 1 a_1 a1 的美味度乘以 2 2 2
  2. 选择一种蛋糕 i ( 2 ≤ i ≤ n ) i(2\leq i \leq n) i(2in),将其美味度 a i a_i ai 变成 ⌊ a i 2 ⌋ \lfloor\frac{a_i}{2}\rfloor 2ai

现在K小姐想知道,最少需要多少次操作,才能使得第一种蛋糕的美味度成为最高。

输入格式

第一行输入一个正整数 n ( 1 ≤ n ≤ 1 0 5 ) n(1\leq n\leq 10^5) n(1n105),表示蛋糕的种类数。

第二行输入 n n n 个正整数,第 i i i 个数为 a i ( 1 ≤ a i ≤ 1 0 9 ) a_i(1\leq a_i\leq 10^9) ai(1ai109),表示第 i i i 种蛋糕的美味度。

输出格式

输出一个整数,表示最少需要的操作次数。

样例输入

6
1 1 4 4 1 4

样例输出

2

样例解释

将第一种蛋糕的美味度连续乘 2 2 2 两次,就可以使其美味度达到 4 4 4,成为所有蛋糕中最高的。

数据范围

  • 1 ≤ n ≤ 1 0 5 1\leq n\leq 10^5 1n105
  • 1 ≤ a i ≤ 1 0 9 1\leq a_i\leq 10^9 1ai109

题解

本题可以用贪心的思想来解决。首先统计出有多少种蛋糕的美味度高于第一种蛋糕,记为 c n t cnt cnt。然后进行如下操作:

  • 如果 c n t ≥ 2 cnt\geq 2 cnt2,就将第一种蛋糕的美味度乘以 2 2 2,同时更新 c n t cnt cnt 的值。
  • 如果 c n t = 1 cnt=1 cnt=1,就将唯一比第一种蛋糕美味度高的那种蛋糕的美味度除以 2 2 2,同时更新 c n t cnt cnt 的值。

重复上述操作,直到 c n t = 0 cnt=0 cnt=0,此时第一种蛋糕的美味度就成为了最高。

总操作次数即为最少需要的操作次数。

时间复杂度为 O ( n log ⁡ M ) O(n\log M) O(nlogM),其中 M = max ⁡ { a i } M=\max\{a_i\} M=max{ai}。空间复杂度为 O ( n ) O(n) O(n)

参考代码

  • Python
n = int(input())
a = list(map(int, input().split()))a1 = a[0]
cnt = sum(ai > a1 for ai in a[1:])
ops = 0while cnt > 0:if cnt >= 2:a1 *= 2cnt = sum(ai > a1 for ai in a[1:]) else:for i in range(1, n):if a[i] > a1:a[i] //= 2if a[i] <= a1:cnt -= 1breakops += 1print(ops)
  • Java
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] a = new int[n];for (int i = 0; i < n; i++) {a[i] = sc.nextInt();}int a1 = a[0];int cnt = 0;for (int i = 1; i < n; i++) {if (a[i] > a1) {cnt++;}}int ops = 0;while (cnt > 0) {if (cnt >= 2) {a1 *= 2;cnt = 0;for (int i = 1; i < n; i++) {if (a[i] > a1) {cnt++;}}} else {for (int i = 1; i < n; i++) {if (a[i] > a1) {a[i] /= 2;if (a[i] <= a1) {cnt--;}break;}}}ops++;}System.out.println(ops);}
}
  • Cpp
#include <iostream>
#include <vector>
using namespace std;int main() {int n;cin >> n;vector<int> a(n);for (int i = 0; i < n; i++) {cin >> a[i];}int a1 = a[0];int cnt = 0;for (int i = 1; i < n; i++) {if (a[i] > a1) {cnt++;}}int ops = 0;while (cnt > 0) {if (cnt >= 2) {a1 *= 2;cnt = 0;for (int i = 1; i < n; i++) {if (a[i] > a1) {cnt++;}}} else {for (int i = 1; i < n; i++) {if (a[i] > a1) {a[i] /= 2;if (a[i] <= a1) {cnt--;}break;}}}ops++;}cout << ops << endl;return 0;
}

04.LYA的魔法卡牌

问题描述

LYA是一名魔法学徒,她有一套由 n n n 张卡牌组成的魔法卡牌。每张卡牌上都有一个魔力值 a i ( 1 ≤ a i ≤ 1 0 9 ) a_i(1 \leq a_i \leq 10^9) ai(1ai109)

现在,LYA需要从这套卡牌中移除恰好 k k k 张卡牌,使得剩下的卡牌满足以下条件:对于任意两张卡牌,它们的魔力值要么互为倍数,要么其中一张卡牌的魔力值是另一张的倍数。特别地,如果移除后卡牌数量为 1 1 1 0 0 0,也视为满足条件。

LYA想知道,一共有多少种不同的移除方案呢?

输入格式

第一行包含两个整数 n n n k ( 1 ≤ k ≤ n ≤ 1 0 3 ) k(1 \leq k \leq n \leq 10^3) k(1kn103),分别表示初始卡牌数量和需要移除的卡牌数量。

第二行包含 n n n 个整数,第 i i i 个整数表示第 i i i 张卡牌的魔力值 a i ( 1 ≤ a i ≤ 1 0 9 ) a_i(1 \leq a_i \leq 10^9) ai(1ai109)

数据保证初始卡牌的魔力值两两不同。

输出格式

输出一个整数,表示不同的移除方案数。

样例输入

3 1
1 2 4

样例输出

3

数据范围

  • 1 ≤ k ≤ n ≤ 1 0 3 1 \leq k \leq n \leq 10^3 1kn103
  • 1 ≤ a i ≤ 1 0 9 1 \leq a_i \leq 10^9 1ai109
  • 初始卡牌的魔力值两两不同

题解

本题可以使用动态规划求解。令 d p [ i ] [ j ] dp[i][j] dp[i][j] 表示考虑前 i i i 张卡牌,保留 j j j 张卡牌的方案数。

首先,我们对卡牌按照魔力值从小到大排序。然后,我们可以得到以下状态转移方程:

  • 对于第一张卡牌,只有一种方案,即 d p [ 1 ] [ 1 ] = 1 dp[1][1] = 1 dp[1][1]=1
  • 对于第 i i i 张卡牌,如果我们不保留它,则方案数等于不考虑第 i i i 张卡牌时的方案数,即 d p [ i ] [ j ] = d p [ i − 1 ] [ j ] dp[i][j] = dp[i-1][j] dp[i][j]=dp[i1][j]
  • 如果我们保留第 i i i 张卡牌,则需要枚举第 i i i 张卡牌之前的所有卡牌,如果它们的魔力值是第 i i i 张卡牌魔力值的因数,则可以转移状态,即 d p [ i ] [ j ] + = d p [ k ] [ j − 1 ] dp[i][j] += dp[k][j-1] dp[i][j]+=dp[k][j1],其中 a [ i ] a[i] a[i] a [ k ] a[k] a[k] 的倍数。

最后,我们将所有 d p [ i ] [ n − k ] dp[i][n-k] dp[i][nk] 的值求和即可得到答案。

时间复杂度为 O ( n 3 ) O(n^3) O(n3),空间复杂度为 O ( n 2 ) O(n^2) O(n2)

参考代码

  • Python
n, k = map(int, input().split())
a = list(map(int, input().split()))if n == k:print(1)exit()a.sort()
m = n - k 
dp = [[0] * (m + 1) for _ in range(n + 1)]for i in range(1, n + 1):dp[i][1] = 1for i in range(1, n + 1):for j in range(1, i):if a[i - 1] % a[j - 1] == 0:for l in range(1, min(m, i) + 1):dp[i][l] += dp[j][l - 1]ans = 0
for i in range(1, n + 1):ans += dp[i][m]print(ans)
  • Java
import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int k = sc.nextInt();int[] a = new int[n];for (int i = 0; i < n; i++) {a[i] = sc.nextInt();}if (n == k) {System.out.println(1);return;}Arrays.sort(a);int m = n - k;long[][] dp = new long[n + 1][m + 1];for (int i = 1; i <= n; i++) {dp[i][1] = 1;}for (int i = 1; i <= n; i++) {for (int j = 1; j < i; j++) {if (a[i - 1] % a[j - 1] == 0) {for (int l = 1; l <= Math.min(m, i); l++) {dp[i][l] += dp[j][l - 1];}}}}long ans = 0;for (int i = 1; i <= n; i++) {ans += dp[i][m];}System.out.println(ans);}
}
  • Cpp
#include <iostream>
#include <algorithm>
#include <vector>using namespace std;int main() {int n, k;cin >> n >> k;vector<int> a(n);for (int i = 0; i < n; i++) {cin >> a[i];}if (n == k) {cout << 1 << endl;return 0;}sort(a.begin(), a.end());int m = n - k;vector<vector<long long>> dp(n + 1, vector<long long>(m + 1));for (int i = 1; i <= n; i++) {dp[i][1] = 1;}for (int i = 1; i <= n; i++) {for (int j = 1; j < i; j++) {if (a[i - 1] % a[j - 1] == 0) {for (int l = 1; l <= min(m, i); l++) {dp[i][l] += dp[j][l - 1];}}}}long long ans = 0;for (int i = 1; i <= n; i++) {ans += dp[i][m];}cout << ans << endl;return 0;
}

05.K 小姐的珠宝搭配

问题描述

K 小姐是一位珠宝设计师,她有 n n n 颗宝石。现在,她想把这些宝石两两配对,设计出独特的珠宝首饰。

为了让珠宝更加美观,K 小姐规定,在每一对宝石 ( a , b ) (a,b) (a,b) 中,第一颗宝石的大小 a a a 必须小于等于第二颗宝石的大小 b b b

现在,K 小姐想知道,在满足上述条件的情况下,她最多能设计出多少种不同的宝石搭配方案。

注意, ( a , b ) (a,b) (a,b) ( b , a ) (b,a) (b,a) 被视为同一种搭配方案。

输入格式

第一行包含一个整数 n n n ( 1 ≤ n ≤ 1 0 5 ) (1 \leq n \leq 10^5) (1n105),表示宝石的数量。

第二行包含 n n n 个整数,第 i i i 个整数 a i a_i ai ( 1 ≤ a i ≤ 1 0 9 ) (1 \leq a_i \leq 10^9) (1ai109) 表示第 i i i 颗宝石的大小。

输出格式

输出一个整数,表示最多能设计出的不同宝石搭配方案数。

样例输入

8
1 1 2 2 2 2 3 3

样例输出

4

数据范围

  • 1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^5 1n105
  • 1 ≤ a i ≤ 1 0 9 1 \leq a_i \leq 10^9 1ai109

题解

本题可以使用贪心的思想来解决。我们可以先将宝石按照大小进行排序,然后统计每种大小的宝石的数量。

接下来,我们按照宝石数量从多到少的顺序进行配对。对于数量最多的宝石,我们优先与其他种类的宝石进行配对。如果配对完所有其他种类的宝石后,该种宝石还有剩余,则再将剩余的宝石两两配对。

具体步骤如下:

  1. 将宝石按照大小进行排序。
  2. 使用字典 dict_ 统计每种大小的宝石的数量。
  3. 将字典转换为列表 a_,其中每个元素为 ( s i z e , c o u n t ) (size, count) (size,count) 的元组,表示宝石的大小和数量。
  4. 将列表 a_ 按照宝石数量从多到少进行排序。
  5. 遍历列表 a_,对于每种宝石:
    • 从下一种宝石开始,依次与其配对,直到当前宝石数量为 0 0 0 或者遍历完所有其他种类的宝石。
    • 如果当前宝石还有剩余,则将剩余的宝石两两配对。
  6. 输出配对的总数。

时间复杂度为 O ( n log ⁡ n ) O(n \log n) O(nlogn),空间复杂度为 O ( n ) O(n) O(n)

参考代码

  • Python
n = int(input())
a = list(map(int, input().split()))
a.sort()count = {}
for x in a:count[x] = count.get(x, 0) + 1pairs = [(size, cnt) for size, cnt in count.items()]
pairs.sort(key=lambda x: x[1], reverse=True)res = 0
for i in range(len(pairs) - 1):while count[pairs[i][0]] > 0:j = i + 1while j < len(pairs) and count[pairs[j][0]] > 0:count[pairs[i][0]] -= 1count[pairs[j][0]] -= 1res += 1j += 1if count[pairs[i][0]] >= 2:count[pairs[i][0]] -= 2res += 1print(res)
  • Java
import java.io.*;
import java.util.*;public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));int n = Integer.parseInt(br.readLine());int[] a = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();Arrays.sort(a);Map<Integer, Integer> count = new HashMap<>();for (int x : a) {count.put(x, count.getOrDefault(x, 0) + 1);}List<int[]> pairs = new ArrayList<>();for (int size : count.keySet()) {pairs.add(new int[]{size, count.get(size)});}pairs.sort((p1, p2) -> p2[1] - p1[1]);int res = 0;for (int i = 0; i < pairs.size() - 1; i++) {while (count.get(pairs.get(i)[0]) > 0) {int j = i + 1;while (j < pairs.size() && count.get(pairs.get(j)[0]) > 0) {count.put(pairs.get(i)[0], count.get(pairs.get(i)[0]) - 1);count.put(pairs.get(j)[0], count.get(pairs.get(j)[0]) - 1);res++;j++;}if (count.get(pairs.get(i)[0]) >= 2) {count.put(pairs.get(i)[0], count.get(pairs.get(i)[0]) - 2);res++;}}}System.out.println(res);}
}
  • Cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;int main() {int n;cin >> n;vector<int> a(n);for (int i = 0; i < n; i++) {cin >> a[i];}sort(a.begin(), a.end());unordered_map<int, int> count;for (int x : a) {count[x]++;}vector<pair<int, int>> pairs;for (auto p : count) {pairs.emplace_back(p.first, p.second);}sort(pairs.begin(), pairs.end(), [](const auto& p1, const auto& p2) {return p1.second > p2.second;});int res = 0;for (int i = 0; i < pairs.size() - 1; i++) {while (count[pairs[i].first] > 0) {int j = i + 1;while (j < pairs.size() && count[pairs[j].first] > 0) {count[pairs[i].first]--;count[pairs[j].first]--;res++;j++;}if (count[pairs[i].first] >= 2) {count[pairs[i].first] -= 2;res++;}}}cout << res << endl;return 0;
}

写在最后

📧 KK这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 KK领取,会在飞书进行同步的跟新。

在这里插入图片描述

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

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

相关文章

31.2k star, 免费开源的白板绘图工具 tldraw

31.2k star, 免费开源的白板绘图工具 tldraw 分类 开源分享 项目名: tldraw -- 无限画布白板 Github 开源地址&#xff1a; https://github.com/tldraw/tldraw 在线测试地址&#xff1a; tldraw 文档地址&#xff1a; tldraw SDK tldraw 是一款开源免费的无限画布白板&…

HTML5动画设计工具 Hype 4 Pro v4.1.14中文激活版

Hype Pro是一款功能丰富、易用且灵活的HTML5动画设计工具&#xff0c;适用于设计师、开发者和创作者创建各种精美的交互式网页动画。它的强大功能和可视化编辑界面使用户能够快速而轻松地实现复杂的动画效果&#xff0c;同时支持多种输出格式和交互方式&#xff0c;满足用户对网…

Word·VBA文档合并

目录 1&#xff0c;复制法&#xff0c;不保留原文档格式2&#xff0c;复制法&#xff0c;保留原文档格式3&#xff0c;插入法&#xff0c;保留原文档格式 之前的文章《WordVBA实现邮件合并》虽然可以生成邮件合并文档结果&#xff0c;但是不能像《python实现word邮件合并》一样…

用户账号和组账号及管理

用户账号和组账号 Linux中每个用户是通过 User Id &#xff08;UID&#xff09;来唯一标识的 新建用户 1-60000 自动分配 0-65535 端口号&#xff0c;系统是靠uid来区分用户身份的&#xff0c;用户的uid 为0 就是超级管理员 1.用户账号的类型 超级管理员:权限最高的用户,roo…

基于单片机PID炉温自动控制系统设计

**单片机设计介绍&#xff0c;基于单片机PID炉温自动控制系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机PID炉温自动控制系统设计是一个综合性的工程任务&#xff0c;旨在通过单片机结合PID控制算法实现炉温的精确和自…

Django源码之路由匹配(下)——图解逐步分析底层源码

目录 1. 前言 2. 路由匹配全过程分析 2.1 请求的入口 2.2 request的封装 2.3 response的源头 2.4 handler的获取 2.5 获取resolver对象 2.6 路由进行匹配 3. 小结 1. 前言 在上一篇文章中&#xff0c;我们谈到了路由的定义&#xff0c;通过URLPattern路由路径对象和Rou…

(一)小案例银行家应用程序-介绍

案例示例如下所示&#xff1a; 登录之后就会出现下面所示&#xff1a; 项目案例流程图如下 ● 首先我们建立四个账号对象&#xff0c;用于登录 const account1 {owner: ItShare,movements: [200, 450, -400, 3000, -650, -130, 70, 1300],interestRate: 1.2, // %pin: 11…

注意力机制篇 | YOLOv8改进之添加多尺度全局注意力机制DilateFormer(MSDA)| 即插即用

前言:Hello大家好,我是小哥谈。多尺度全局注意力机制DilateFormer是一种用图像识别任务的深度学习模型。它是在Transformer模型的基础上进行改进的,旨在提高模型对图像中不同尺度信息的感知能力。DilateFormer引入了多尺度卷积和全局注意力机制来实现多尺度感知。具体来说,…

Rancher介绍

1.什么是Rancher Rancher是一套容器管理平台&#xff0c;专门用于部署和管理容器化应用。以下是关于Rancher的详细介绍&#xff1a; 容器编排与管理&#xff1a;Rancher是一个开源的企业级容器管理平台&#xff0c;它支持Kubernetes作为其容器编排引擎。Rancher可以帮助用户在…

java线程的几种状态

目录 正文&#xff1a; 1.JConsole 2.新建状态(New) 3.运行状态(Runnable) 4.阻塞状态(Blocked) 5.等待状态(Waiting) 6.计时等待状态(Timed Waiting) 7.终止状态(Terminated) 总结&#xff1a; 正文&#xff1a; 1.JConsole JConsole是Java监控和管理控制台工具&…

ABAP 读取EXCEL 文件内容,函数 TEXT_CONVERT_XLS_TO_SAP

EXCEL 内容: 读取内容: 代码: TYPES: BEGIN OF ITAB, FL1(50) TYPE C, FL2(50) TYPE C, FL3(50) TYPE C, FL4(50) TYPE C, FL5(50) TYPE C, FL6(50) TYPE C, END OF ITAB. DATA: T_ITEM TYPE TABLE OF ITAB WITH HEADER LINE. TYPE…

Netty经典32连问

文章目录 1、Netty是什么&#xff0c;它的主要特点是什么&#xff1f;2、Netty 应用场景了解么&#xff1f;3、Netty 核心组件有哪些&#xff1f;分别有什么作用&#xff1f;4、Netty的线程模型是怎样的&#xff1f;如何优化性能&#xff1f;5、EventloopGroup了解么?和 Event…

PWM方式读取AS5600磁编码器数据

PWM方式读取AS5600磁编码器获取角度例程 &#x1f4cd;相关篇《STM32 软件I2C方式读取AS5600磁编码器获取角度例程》&#x1f4cc;《HAL STM32 硬件I2C方式读取AS5600磁编码器获取角度例程》&#x1f389;本例程包含&#xff1a;Arduino测试代码、STM32标准库代码、HAL STM32代…

Mac删除软件,动一动手指,几秒就彻底删除 mac删除软件删不掉的解决方法 mac删除软件后怎么删除软件数据

当你入职新公司&#xff0c;接手前任员工使用的Mac电脑时&#xff0c;很可能会遇到一个非常普遍的问题&#xff1a;电脑中装有大量你不需要的软件。这些软件不仅占用宝贵的硬盘空间&#xff0c;还可能影响电脑的运行速度和效率。为了获得一个干净、清爽的使用体验&#xff0c;删…

Java 关键字 this 使用详解(通俗易懂)

this关键字主要有以下三个地方使用 在方法体中引用当前对象&#xff0c;即其方法被调用的对象&#xff0c;以便将当前对象的实例变量或当前对象作为参数传递给其他方法。 ① t this.x; 要在方法中引用当前对象&#xff0c;可以使用关键字 this。 ② return this; 作为当前…

[java]网络编程

网络编程概述 计算机网络&#xff1a; 把分布在不同地理区域的具有独立功能的计算机,通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统。 Java是 Internet 上的语言&#xff0c;它从语言级上提供了对网络应用程序的支持&#xff0c;程序…

题库管理系统-基于Springboot实现JAVA+SQL离散数学题库管理系统(完整源码+LW+翻译)

基于Springboot实现JAVASQL离散数学题库管理系统(完整源码LW翻译) 概述&#xff1a; 本系统具体完成的功能如下&#xff1a; 1题库的管理与维护&#xff1a;新题的录入&#xff0c;修改&#xff0c;删除等功能。 2生成试卷&#xff1a;包括自动生成与手工改动&#xff0c;要…

使用msf进行有防火墙限制的3389端口转发

使用msf进行有防火墙限制的3389端口转发 这里主要是针对在内网中遇到需要开启3389的时候&#xff0c;发现存在防火墙&#xff0c;就没有办法直接远程连接&#xff0c;这个时候就可以使用端口转发使用msf&#xff0c;使用前记得先初始化&#xff0c;连接好数据库这里先使用msf进…

二.音视频编辑-媒体组合-播放

引言 当涉及到音视频编辑时&#xff0c;媒体资源的提取和组合是至关重要的环节。在iOS平台上&#xff0c;AVFoundation框架提供了丰富而强大的功能&#xff0c;使得媒体资源的操作变得轻松而高效。从原始的媒体中提取片段&#xff0c;然后将它们巧妙地组合成一个完整的作品&am…

51之定时器与中断系统

目录 1.定时器与中断系统简介 1.1中断系统 1.2定时器 1.2.1定时器简介 1.2.2定时器大致原理及其配置 1.2.3定时器所需的所有配置总介 2.定时器0实现LED闪烁 3.使用软件生成定时器初始化程序 1.定时器与中断系统简介 1.1中断系统 首先&#xff0c;我们需要来了解一下什么…