ABC396题解
A
算法标签: 模拟
问题陈述
给你一个长度为 N N N 的整数序列: A = ( A 1 , A 2 , … , A N ) A = (A_1, A_2, \ldots, A_N) A=(A1,A2,…,AN)。
请判断在 A A A 中是否有相同元素连续出现三次或三次以上的位置。
更正式地说,请判断是否存在一个整数 i i i 与 1 ≤ i ≤ N − 2 1 \le i \le N-2 1≤i≤N−2 中的 A i = A i + 1 = A i + 2 A_i = A_{i+1} = A_{i+2} Ai=Ai+1=Ai+2。
#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;const int N = 110;int n, w[N];int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);cin >> n;for (int i = 0; i < n; ++i) cin >> w[i];int i = 0, j = 2;while (j < n) {if (w[i] == w[j] && w[i] == w[i + 1]) {cout << "Yes" << "\n";return 0;}i++, j++;}cout << "No" << "\n";return 0;
}
B
算法标签: 栈, 模拟
问题陈述
有一叠 100 100 100 纸牌,每张都标有整数 0 0 0 。
处理 Q Q Q 个查询。每个查询都属于以下情况之一:
- 输入 1 1 1 :将一张标有整数 x x x 的卡片放在堆栈顶部。
- 类型 2 2 2 :取出堆栈顶端的卡片,并输出写在该卡片上的整数。在此问题的限制条件下,牌堆中总是至少有一张牌。
#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;const int N = 210;int n;
int stack[N], top;int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);top = 99;cin >> n;while (n--) {int op, val;cin >> op;if (op == 1) {cin >> val;stack[++top] = val;}else cout << stack[top--] << "\n";}return 0;
}
C
算法标签: 前缀和, 贪心
问题陈述
有 N N N 个黑球和 M M M 个白球。
每个球都有一个值。第 i i i 个黑球( 1 ≤ i ≤ N 1 \le i \le N 1≤i≤N )的值是 B i B_i Bi ,第 j j j 个白球( 1 ≤ j ≤ M 1 \le j \le M 1≤j≤M )的值是 W j W_j Wj 。
选择零个或更多的球,使得所选黑球的数量至少等于所选白球的数量。在所有这样的选择中,求所选球的数值之和的最大值。
思路
很容易想到时间复杂度 O ( n 2 ) O(n ^ 2) O(n2)的做法, 但是球的数量 1 0 5 10 ^ 5 105级别, 会超时, 因此需要优化到 O ( n 2 ) O(n ^ 2) O(n2)以下
#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;typedef long long LL;
const int N = 2e5 + 10;int n, m;
int b[N], w[N], gre;
LL s1[N], s2[N];int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);cin >> n >> m;for (int i = 1; i <= n; ++i) cin >> b[i];for (int i = 1; i <= m; ++i) cin >> w[i];sort(b + 1, b + n + 1);reverse(b + 1, b + n + 1);sort(w + 1, w + m + 1);reverse(w + 1, w + m + 1);for (int i = 1; i <= n; ++i) {if (b[i] > 0) gre = i;s1[i] = (LL) s1[i - 1] + b[i];}for (int i = 1; i <= m; ++i) s2[i] = (LL) s2[i - 1] + w[i];LL res = 0;// 枚举选择白球的数量for (int k = 0; k <= min(n, m); ++k) {int cnt = max(k, gre);res = max(res, s2[k] + s1[cnt]);}cout << res << "\n";return 0;
}
D
算法标签: d f s dfs dfs
问题陈述
给你一个简单相连的无向图,图中有 N N N 个顶点,编号为 1 1 1 到 N N N,有 M M M 条边,编号为 1 1 1 到 M M M。边 i i i 连接顶点 u i u_i ui 和 v i v_i vi,其标签为 w i w_i wi。
在从顶点 1 1 1 到顶点 N N N 的所有简单路径(不经过同一顶点多次的路径)中,求路径上边的标签的最小 XOR。
关于 XOR 的说明
对于非负整数 A A A 和 B B B,它们的 XOR A ⊕ B A \oplus B A⊕B 定义如下:
- 在 A ⊕ B A \oplus B A⊕B 的二进制表示中,当且仅当 A A A 和 B B B 的相同数位中恰好有一位是 1 1 1 时, 2 k ( k ≥ 0 ) 2^k \ (k \ge 0) 2k (k≥0) 对应数位上的数字是 1 1 1;否则,它是 0 0 0。
例如, 3 ⊕ 5 = 6 3 \oplus 5 = 6 3⊕5=6(二进制为: 011 ⊕ 101 = 110 011 \oplus 101 = 110 011⊕101=110)。
一般来说, k k k 个整数 p 1 , … , p k p_1, \dots, p_k p1,…,pk 的 XOR 定义为 ( ⋯ ( ( p 1 ⊕ p 2 ) ⊕ p 3 ) ⊕ ⋯ ⊕ p k ) (\cdots ((p_1 \oplus p_2) \oplus p_3) \oplus \cdots \oplus p_k) (⋯((p1⊕p2)⊕p3)⊕⋯⊕pk)。可以证明它与 p 1 , … , p k p_1, \dots, p_k p1,…,pk 的顺序无关。
思路
注意到, 点的数量不大于 10 10 10, 直接暴搜
#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;typedef long long LL;
const int N = 12, M = N * N;int n, m;
int head[N], edge_end[M], next_edge[M], edge_index;
LL w[M];
bool vis[N];
LL res = 9e18;void add(int ver1, int ver2, LL val) {edge_end[edge_index] = ver2, next_edge[edge_index] = head[ver1], w[edge_index] = val, head[ver1] = edge_index++;
}void dfs(int u, LL curr) {if (u == n) {res = min(res, curr);return;}for (int i = head[u]; ~i; i = next_edge[i]) {int ver = edge_end[i];if (!vis[ver]) {vis[ver] = true;dfs(ver, curr ^ w[i]);vis[ver] = false;}}
}int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);memset(head, -1, sizeof head);cin >> n >> m;while (m--) {int u, v;LL val;cin >> u >> v >> val;add(u, v, val);add(v, u, val);}vis[1] = true;dfs(1, 0);cout << res << "\n";return 0;
}
E
算法标签: 贪心, d f s dfs dfs
问题陈述
给你整数 N , M N, M N,M 和长度为 M M M 的三个整数序列: X = ( X 1 , X 2 , … , X M ) X = (X_1, X_2, \ldots, X_M) X=(X1,X2,…,XM)、 Y = ( Y 1 , Y 2 , … , Y M ) Y = (Y_1, Y_2, \ldots, Y_M) Y=(Y1,Y2,…,YM) 和 Z = ( Z 1 , Z 2 , … , Z M ) Z = (Z_1, Z_2, \ldots, Z_M) Z=(Z1,Z2,…,ZM)。保证 X X X 和 Y Y Y 中的所有元素都在 1 1 1 和 N N N 之间。
我们称长度为 N N N 的非负整数序列 A = ( A 1 , A 2 , … , A N ) A = (A_1, A_2, \ldots, A_N) A=(A1,A2,…,AN) 为好序列,当且仅当它满足以下条件时:
- 对于每一个有 1 ≤ i ≤ M 1 \le i \le M 1≤i≤M 的整数 i i i, A X i A_{X_i} AXi 与 A Y i A_{Y_i} AYi 的 XOR 为 Z i Z_i Zi。
判断是否存在一个好序列 A = ( A 1 , A 2 , … , A N ) A=(A_1,A_2,\ldots,A_N) A=(A1,A2,…,AN),如果存在,找出一个使其元素之和 ∑ i = 1 N A i \displaystyle \sum_{i=1}^N A_i i=1∑NAi 最小的好序列。
关于 XOR 的说明
对于非负整数 A A A 和 B B B,它们的 XOR A ⊕ B A \oplus B A⊕B 定义如下:
- 在 A ⊕ B A \oplus B A⊕B 的二进制表示中,当且仅当 A A A 和 B B B 的相同数位中恰好有一位是 1 1 1 时, 2 k ( k ≥ 0 ) 2^k \ (k \ge 0) 2k (k≥0) 对应数位上的数字是 1 1 1;否则,它是 0 0 0。
例如, 3 ⊕ 5 = 6 3 \oplus 5 = 6 3⊕5=6(二进制为: 011 ⊕ 101 = 110 011 \oplus 101 = 110 011⊕101=110)。
思路
由题意, 分为两步
- 是否存在该序列?
- 如何最小化 A i A_i Ai
首先判断是否无解
A X i ⊕ A Y i = Z i A_{X_i} \oplus A_{Y_i} = Z_i AXi⊕AYi=Zi, 对于异或操作有以下性质
a ⊕ b = c , a ⊕ c = b , b ⊕ c = a a \oplus b = c, a \oplus c = b, b \oplus c = a a⊕b=c,a⊕c=b,b⊕c=a, 异或是可逆的
因为 X i , Y i , Z i X_i,Y_i, Z_i Xi,Yi,Zi是确定的, A X i A_{X_i} AXi和 A Y i A_{Y_i} AYi只要确定一个数, 就可以确定另外一个数
会形成如图的连通块, 在连通块中知道确定一个数, 整个连通块的数都会被确定
如果从 u u u到 v v v出现了两条不一样的路径, 出现矛盾
如何找这些环的边?
维护并查集, 检查 Z = S p a t h 1 ⊕ S p a t h 2 Z = S_{path_1} \oplus S_{path_2} Z=Spath1⊕Spath2, 如果不相等无解
如何维护最小值?
在连通块中确定任何一个元素就能确定任意一个元素, 考虑树的根节点
因为异或操作是逐位异或的, 因此位与位之间是独立的, 每一位单独考虑, 因为要求和最小, 因此要求 1 1 1的数量是最小的
算法流程
- 将图构建成生成树, 检查非树边
- 求最小值, 逐位考虑, 看根节点是选 0 0 0还是选 1 1 1, 最后知道了根节点的值, 然后整个树的值就知道了
XOR 的性质
XOR 操作具有以下性质:
- 自反性:
A ⊕ A = 0 A \oplus A = 0 A⊕A=0 - 结合律:
( A ⊕ B ) ⊕ C = A ⊕ ( B ⊕ C ) (A \oplus B) \oplus C = A \oplus (B \oplus C) (A⊕B)⊕C=A⊕(B⊕C) - 交换律:
A ⊕ B = B ⊕ A A \oplus B = B \oplus A A⊕B=B⊕A
由于这些性质,调整根节点的值 A [ r o o t ] A[root] A[root] 为 A [ r o o t ] ⊕ o f f A[root] \oplus off A[root]⊕off 会使得所有顶点的值 A [ x ] A[x] A[x] 变为 A [ x ] ⊕ o f f A[x] \oplus off A[x]⊕off。
一致性调整
假设根节点的值被调整为 A [ r o o t ] ⊕ o f f A[root] \oplus off A[root]⊕off,那么对于任意顶点 x x x,其值 A [ x ] A[x] A[x] 会被调整为:
A [ x ] ⊕ o f f = ( A [ r o o t ] ⊕ path_xor ) ⊕ o f f = ( A [ r o o t ] ⊕ o f f ) ⊕ path_xor A[x] \oplus off = (A[root] \oplus \text{path\_xor}) \oplus off = (A[root] \oplus off) \oplus \text{path\_xor} A[x]⊕off=(A[root]⊕path_xor)⊕off=(A[root]⊕off)⊕path_xor
其中, path_xor \text{path\_xor} path_xor 是从根节点到顶点 x x x 的路径上所有边的 XOR 值
这种调整方式确保了所有顶点的值仍然满足边的 XOR 条件
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>using namespace std;typedef long long LL;
const int N = 2e5 + 10, M = 2e5 + 10;int n, m;
int head[N], edge_end[M], next_edge[M], w[M], edge_index;
int res[N];void add(int ver1, int ver2, LL val) {edge_end[edge_index] = ver2, next_edge[edge_index] = head[ver1], w[edge_index] = val, head[ver1] = edge_index++;
}int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);memset(head, -1, sizeof head);cin >> n >> m;for (int i = 0; i < m; ++i) {int u, v, w;cin >> u >> v >> w;u--, v--;add(u, v, w);add(v, u, w);}memset(res, -1, sizeof res);for (int x = 0; x < n; ++x) {if (res[x] != -1) continue;vector<int> q;q.push_back(x);res[x] = 0;int cnt[30]{0};for (int i = 0; i < q.size(); ++i) {int u = q[i];for (int j = 0; j < 30; ++j) cnt[j] += res[u] >> j & 1;for (int j = head[u]; ~j; j = next_edge[j]) {int ver = edge_end[j];if (res[ver] == -1) {res[ver] = res[u] ^ w[j];q.push_back(ver);}else if (res[ver] != (res[u] ^ w[j])) {cout << -1 << "\n";return 0;}}}int off = 0;for (int j = 0; j < 30; ++j) {if (cnt[j] > q.size() - cnt[j]) {off ^= 1 << j;}}for (int ver : q) res[ver] ^= off;}for (int i = 0; i < n; ++i) cout << res[i] << " ";cout << "\n";return 0;
}
F
算法标签: 分治, 树状数组, F e n w i c k − T r e e Fenwick-Tree Fenwick−Tree
问题陈述
给你一个整数 N , M N, M N,M 和一个长度为 N N N 的非负整数序列 A = ( A 1 , A 2 , … , A N ) A = (A_1, A_2, \ldots, A_N) A=(A1,A2,…,AN)。
就 k = 0 , 1 , … , M − 1 k = 0, 1, \ldots, M-1 k=0,1,…,M−1 求解下面的问题:
定义一个整数序列 B = ( B 1 , B 2 , … , B N ) B = (B_1, B_2, \ldots, B_N) B=(B1,B2,…,BN),使 B i B_i Bi 除以 M M M 后的余数是 A i + k A_i + k Ai+k。求 B B B 中的倒数。
什么是倒数?
序列 ( A 1 , A 2 , … , A N ) (A_1, A_2, \dots, A_N) (A1,A2,…,AN) 的反转数是满足 1 ≤ i < j ≤ N 1 \le i < j \le N 1≤i<j≤N 和 A i > A j A_i > A_j Ai>Aj 的整数对 ( i , j ) (i, j) (i,j) 的个数。
思路
B i = ( A i + k ) m o d M B_i = (A_i + k) \mod M Bi=(Ai+k)modM. 求 B B B的逆序对数量, 首先考虑简单情况, 如果没有 m o d M \mod M modM, 输出就是原 A i A_i Ai的逆序对数量
考虑简单情况, B i = A i + 1 B_i = A_i + 1 Bi=Ai+1, 哪些逆序对数量发生改变?
B i = M − 1 B_i= M - 1 Bi=M−1的那些数如果加 1 1 1, m o d M \mod M modM变为 0 0 0, 逆序对数量发生变化, 而对于 0 ≤ B i ≤ M − 2 0 \le B_i \le M - 2 0≤Bi≤M−2的数字, 加上 1 1 1再对 M M M取模逆序对数量不会发生变化
因此考虑 B i = M − 1 B_i = M - 1 Bi=M−1的情况
会与每一个后面的非 M − 1 M - 1 M−1的位置形成逆序对, 因为在 m o d M \mod M modM情况下, M − 1 M - 1 M−1就是最大值
逆序对的变化量 Δ c n t = − [ M − 1 ] + [ 0 ] \Delta cnt = -[M - 1] + [0] Δcnt=−[M−1]+[0], 也就是减去变化前 M − 1 M - 1 M−1位置的逆序对数量, 加上变为 0 0 0后与前面形成的逆序对数量
假设当前位置是 p p p, 减去的逆序对数量等于 n − p − c n t M − 1 n - p - cnt_{M - 1} n−p−cntM−1
因为每个数加 1 1 1, 因此变为 0 0 0后前面与前面形成的逆序对数量等于 p − 1 p - 1 p−1
以上是 k = 1 k = 1 k=1的逆序对数量, 以此类推计算到到 k = M − 1 k = M - 1 k=M−1, 也就是 m o d M \mod M modM的最大余数
第 i i i个数什么时候变成 M M M?
在 M − A i M - A_i M−Ai时刻 m o d M \mod M modM变为 0 0 0, 算法时间复杂度 O ( n log n ) O(n\log n) O(nlogn)
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>using namespace std;typedef long long LL;
const int N = 2e5 + 10;int n, m;
int w[N], tr[N];
vector<int> change[N];int lowbit(int val) {return val & -val;
}void add(int u, int val){for (int i = u; i <= m; i += lowbit(i)) tr[i] += val;
}int query(int u) {int res = 0;for (int i = u; i; i -= lowbit(i)) res += tr[i];return res;
}int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);cin >> n >> m;LL res = 0;for (int i = 1; i <= n; ++i) {cin >> w[i];change[m - w[i]].push_back(i);res += query(m - w[i] - 1);add(m - w[i], 1);}cout << res << "\n";for (int k = 1; k < m; ++k) {// 枚举在k时刻从m - 1变为0的所有位置for (int j = 0, sz = change[k].size(); j < sz; ++j) {int p = change[k][j];res -= n - p - (sz - j - 1);res += p - 1 - j;}cout << res << "\n";}return 0;
}
G
算法标签:
问题陈述
有一个 H × W H \times W H×W 网格,每个单元格都包含 0 0 0 或 1 1 1。从顶部起第 i i i 行和从左侧起第 j j j 列的单元格中包含一个整数 A i , j A_{i,j} Ai,j。
您可以按照任意顺序执行以下两种操作任意多次:
- 操作 X:选择一个整数 x x x( 1 ≤ x ≤ H 1 \leq x \leq H 1≤x≤H)。对于每一个整数 1 ≤ y ≤ W 1 \leq y \leq W 1≤y≤W,将 A x , y A_{x,y} Ax,y 替换为 1 − A x , y 1 - A_{x,y} 1−Ax,y。
- 操作 Y:选择一个整数 y y y( 1 ≤ y ≤ W 1 \leq y \leq W 1≤y≤W)。对于每一个整数 1 ≤ x ≤ H 1 \leq x \leq H 1≤x≤H,将 A x , y A_{x,y} Ax,y 替换为 1 − A x , y 1 - A_{x,y} 1−Ax,y。
求替换后 ∑ x = 1 H ∑ y = 1 W A x , y \displaystyle \sum_{x=1}^H \sum_{y=1}^W A_{x,y} x=1∑Hy=1∑WAx,y 的最小值。
思路
相关文章:
ABC396题解
A 算法标签: 模拟 问题陈述 给你一个长度为 N N N 的整数序列: A ( A 1 , A 2 , … , A N ) A (A_1, A_2, \ldots, A_N) A(A1,A2,…,AN)。 请判断在 A A A 中是否有相同元素连续出现三次或三次以上的位置。 更正式地说,请判断是否存在一个整…...
如何用Python和Selenium实现表单的自动填充与提交?
在今天的数字化时代,自动化工具可以极大地提高工作效率。很多人可能会觉得填表单是个繁琐的任务,不过你知道吗?用Python和Selenium可以轻松解决这一问题!本文将带你走进如何利用这两个强大的工具,实现表单的自动填充和…...
使用`plot_heatmap`绘制热力图时
在Python中,使用plot_heatmap绘制热力图时,颜色图例(colorbar)的定制化设置是关键步骤。以下是实现方法及优化建议: 一、基础图例绘制 自动生成颜色条 使用seaborn.heatmap()时,默认会生成颜色条࿰…...
极简桌面待办清单软件,❌不会增加工作量
工作邮件、会议安排、生活琐事……事情多到根本记不住,又怕错过重要事项,焦虑感油然而生。相信这是很多职场朋友遇到的问题,也急需一款好用的极简桌面待办清单软件来辅助我们。 今天我要给大家推荐一款拯救我们于水火的神器——好用便签&…...
QT学习笔记4
一、音视频播放(Qt Multimedia) 1. 多媒体框架架构 核心类关系 : mermaid #mermaid-svg-mwHLYcpaJDU14uFM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-mwHLYcpaJDU14uFM .e…...
软考 中级软件设计师 考点知识点笔记总结 day06
文章目录 6、树和二叉树6.1、树的基本概念6.2、二叉树的基本概念6.3、二叉树的遍历6.4、查找二叉树(二叉排序树)BST6.5、构造霍夫曼树6.6、线索二叉树6.7、 平衡二叉树 7、 图7.1 、 存储结构 - 邻接矩阵7.2 、 存储结构 - 邻接表7.3、图的遍历7.4、拓扑…...
爬虫基础之爬取猫眼Top100 可视化
网站: TOP100榜 - 猫眼电影 - 一网打尽好电影 本次案例所需用到的模块 requests (发送HTTP请求) pandas(数据处理和分析 保存数据) parsel(解析HTML数据) pyecharts(数据可视化图表) pymysql(连接和操作MySQL数据库) lxml(数据解析模块) 确定爬取的内容: 电影名称 电影主演…...
微信小程序面试内容整理-如何使用wx.request()进行网络请求
wx.request() 是微信小程序中用于发送网络请求的 API,类似于浏览器中的 fetch 或 XMLHttpRequest。通过 wx.request(),开发者可以向服务器发送 HTTP 请求,获取数据或者提交数据。 基本用法 wx.request() 通过提供一个配置对象来进行配置,配置对象中包括请求的 URL、请求方法…...
力扣100二刷——图论、回溯
第二次刷题不在idea写代码,而是直接在leetcode网站上写,“逼”自己掌握常用的函数。 标志掌握程度解释办法⭐Fully 完全掌握看到题目就有思路,编程也很流利⭐⭐Basically 基本掌握需要稍作思考,或者看到提示方法后能解答⭐⭐⭐Sl…...
该错误是由于`KuhnMunkres`类未定义`history`属性导致的
该错误是由于KuhnMunkres类未定义history属性导致的。以下是具体分析及解决方案: 错误原因分析 属性缺失 代码中试图访问km.history,但KuhnMunkres类未在初始化或算法执行过程中定义该属性,因此触发AttributeError。动画实现逻辑不完整 用户…...
DAPO:一个开源的大规模大型语言模型LLM强化学习系统
推断扩展赋予了大型语言模型前所未有的推理能力,强化学习作为激发复杂推理的核心技术,清华大学联合字节提出了解耦片段与动态采样策略优化(DAPO)算法,并全面开源了一个最先进的大规模强化学习系统,该系统使用Qwen2.5-32B基础模型在AIME 2024上取得了50分的高分。还开源了…...
数据结构中的引用管理对象体系
数据结构中的引用管理对象体系 (注:似复刻变量即实例对象) 引用管理对象的,有引用就能管理到它所指向的对象,我们拿引用最终的目的就是管理那些我们需要管理的最终直接对象,引用也是对象,同时…...
【自学笔记】智能合约基础知识点总览-持续更新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 智能合约基础知识点总览目录1. 智能合约简介2. 以太坊与Solidity示例代码:Hello World智能合约 3. Solidity基础语法示例代码:简单的计数器合…...
Linux的Shell编程
一、什么是Shell 1、为什么要学习Shell Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理。 对于JavaEE和Python程序员来说,工作的需要。Boss会要求你编写一些Shell脚本进行程序或者是服务器的维护,比如编写一个…...
【八股文】volatile关键字的底层原理是什么
volatile只能保证可见性和有序性 volatile如何保证可见性 当对volatile变量进行写操作的时候,JVM会向处理器发送一条lock前缀的命令,将这个缓存中的变量会写到系统内存中。 所以,如果一个变量被volatile所修饰,每次数据变化之后…...
一种基于大规模语言模型LLM的数据分析洞察生成方法
从复杂数据库中提取洞察对数据驱动决策至关重要,但传统手动生成洞察的方式耗时耗力,现有自动化数据分析方法生成的洞察不如人工生成的有洞察力,且存在适用场景受限等问题。下文将介绍一种新的方法,通过生成高层次问题和子问题,并使用SQL查询和LLM总结生成多表数据库中的见…...
三大供应链管理模式——解决方案与实操案例详解
库存压到喘不过气,紧急订单却总赶不上交付?这是许多企业的真实困境——推式供应链盲目备货导致积压,拉式供应链又因响应慢而丢单。供应链管理,本质上是在“计划”与“变化”之间把握平衡。上篇文章,我们系统梳理了供应…...
【C++】STL库面试常问点
STL库 什么是STL库 C标准模板库(Standard Template Libiary)基于泛型编程(模板),实现常见的数据结构和算法,提升代码的复用性和效率。 STL库有哪些组件 STL库由以下组件构成: ● 容器…...
集成学习之随机森林
目录 一、集成学习的含义 二、集成学习的代表 三、集成学习的应用 1、分类问题集成。(基学习器是分类模型) 2、回归问题集成。(基学习器是回归模型) 3、特征选取集成。 四、Bagging之随机森林 1、随机森林是有多个决策树&a…...
【SpringBatch】03步骤对象 (Step)控制与执行流程设计
目录标题 六、步骤对象 Step6.1 步骤介绍6.2 简单Tasklet6.3 chunk居于块Tasklet**ChunkTasklet 泛型** 6.4 步骤监听器6.5 多步骤执行6.6 步骤控制6.6.1 条件分支控制-使用默认返回状态6.6.2 条件分支控制-使用自定义状态值 6.7 步骤状态6.8 流式步骤 六、步骤对象 Step 前面…...
走进Java:String字符串的基本使用
❀❀❀ 大佬求个关注吧~祝您开心每一天 ❀❀❀ 目录 一、什么是String 二、如何定义一个String 1. 用双引号定义 2. 通过构造函数定义 三、String中的一些常用方法 1 字符串比较 1.1 字符串使用 1.2 字符串使用equals() 1.3 使用 equalsIgnoreCase() 1.4 cpmpareTo…...
AI如何变革亚马逊广告投放?DeepBI的智能优化解析
在亚马逊平台上,广告投放的方式正经历着从人工精细化运营到AI自动化优化的深刻变革。传统的广告投放依赖人工操作,涉及海量数据分析、手动调价、竞价策略优化等环节,既耗时又易受人为因素影响。而AI驱动的智能投放系统,如DeepBI&a…...
小程序电子画册制作,用户体验为王!
家人们,现在小程序电子画册超火,不管是展示产品还是分享故事都超实用。但在小程序电子画册制作过程中,用户体验真的得好好考量!今天就和大家唠唠这其中的门道。 1、加载速度:快才是王道 打开小程序的瞬间,…...
【商城实战(49)】解锁小程序端适配与优化,让商城飞起来
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
英伟达GTC 2025大会产品全景剖析与未来路线深度洞察分析
【完整版】3月19日,黄仁勋Nvidia GTC 2025 主题演讲|英伟达 英伟达GTC 2025大会产品全景剖析与未来路线深度洞察分析 一、引言 1.1 分析内容 本研究主要采用了文献研究法、数据分析以及专家观点引用相结合的方法。在文献研究方面,广泛收集了…...
《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用
《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用 《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用内核对象内核对象的定义内核对象归操作系统所有 基于 Windows 的线程创建进程与线程的关系Windows 中线程的创建方…...
线性规划的基本解、基本可行解和可行解
在线性规划中,基本解、基本可行解和可行解是非常重要的概念,特别是在使用单纯形法求解时。下面详细解释这些概念,并说明如何计算它们。 1. 线性规划问题的标准形式 线性规划的标准形式为: 其中: A 是 mn 的矩阵&…...
【AVRCP】服务发现互操作性:CT 与 TG 的 SDP 协议契约解析
目录 一、服务发现的核心目标:能力画像对齐 二、控制器(CT)服务记录:控制能力的声明 2.1 必选字段:角色与协议的刚性契约 2.1.1 服务类标识(Service Class ID List) 2.1.2 协议描述列表&am…...
[从零开始学习JAVA] Stream流
前言: 本文我们将学习Stream流,他就像流水线一样,可以对我们要处理的对象进行逐步处理,最终达到我们想要的效果,是JAVA中的一大好帮手,值得我们了解和掌握。(通常和lambda 匿名内部类 方法引用相…...
K8S学习之基础三十八:Kube-static-metrics监控
Kube-static-metrics监控 kube-static-metrics组件可以通过监听apiserver生成有关资源对象的状态指标,比如Node、Pod,需要注意的是kube-state-metrics只是简单的提供一个metrics数据,并不会存储这些指标数据,所以可以使用Prom…...
JAVA-多线程join()等待一个线程
引言:更多线程的认识可以看一篇博客: JAVA-Thread类实现多线程-CSDN博客 一、join()的作用 我们知道线程是随机调度执行的,但是有时候我们需要另一个任务完成了,我们才能继续,这个时候我们就可以使用join去等待线程结束…...
HashMap 常用方法
HashMap 常用方法 方法作用示例put(K key, V value)添加键值对map.put("apple", 10);get(Object key)获取指定键的值map.get("apple"); → 10remove(Object key)删除指定键的键值对map.remove("orange");containsKey(Object key)检查是否包含指…...
LogicFlow介绍
LogicFlow介绍 LogicFlow是一款流程图编辑框架,提供了一系列流程图交互、编辑所必需的功能和灵活的节点自定义、插件等拓展机制。LogicFlow支持前端自定义开发各种逻辑编排场景,如流程图、ER图、BPMN流程等。在工作审批流配置、机器人逻辑编排、无代码平…...
Docker搭建MySQL主从服务器
一、在主机上创建MySQL配置文件——my.cnf master服务器配置文件路径:/data/docker/containers/mysql-cluster-master/conf.d/my.cnf slave服务器配置文件路径: /data/docker/containers/mysql-cluster-master/conf.d/my.cnf master服务配置文件内容 …...
计算机二级web易错点(4)-选择题
选项 A:<input type"radio"> 用于创建单选按钮,同一组单选按钮中只能选择一个选项,所以该选项不符合要求。选项 B:HTML 中没有 type"check" 这种类型,是错误的写法,不能产生复选…...
3.19学习总结
学习了Java中的面向对象的知识点 完成一道算法题,找树左下角的值,错误的以为左下角只能是最底层的左节点,但指的是最底层最左边的节点...
Swagger-告别手写文档
文章目录 1. 引言2. Swagger是什么?3. SpringBoot2.7.3集成Swagger4. 常见注解 1. 引言 在RESTful API开发中,维护准确、易读的接口文档是团队协作的核心挑战,通常接口文档分为离线的和实时的。离线的接口文档工具有 YAPI等,其中…...
LeetCode-回文数
原题链接:9. 回文数 - 力扣(LeetCode) 首先我会想到的是,将这个数字转成字符串,然后通过前后指针判断是否相等,最终返回结果是否为回文数,时间复杂度:O(n),空间复杂度&am…...
数据结构之链表(双链表)
目录 一、双向带头循环链表 概念 二、哨兵位的头节点 优点: 头节点的初始化 三、带头双向链表的实现 1.双链表的销毁 2.双链表的打印 3.双链表的尾插和头插 尾插: 头插: 4.双链表的尾删和头删 尾删: 头删: …...
硬件基础(5):(2)二极管分类
文章目录 📌 二极管的分类与详细介绍1. **整流二极管(Rectifier Diode)**特点:选型依据:补充说明: 2. **快恢复二极管(Fast Recovery Diode)**特点:选型依据:…...
MQTT 和 Modbus 的优缺点对比
MQTT和Modbus协议是物联网(IoT)躲不开的两种协议,市面上覆盖了百分之98的产品。 MQTT由IBM在1999年发布。2014年,MQTT成为OASIS(结构化信息标准促进组织)的标准,后来被ISO/IEC 20922正式采纳&a…...
Android14 系统左右声音通道设置代码
Android14 系统左右声音通道设置代码 文章目录 Android14 系统左右声音通道设置代码一、前言二、系统级设置左右声音通道分析1、各方案设置左右声音通道的主要代码(1)3588 Android13 方案的实现(2)9679 Android14 方案的实现&…...
【Golang】go如何通过atomic原子操作来确保数据一致性
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...
2025年汽车加气站操作工考试精选题库
汽车加气站操作工题库中题目及答案: 单项选择题 1、按压力容器的设计压力分为( )个压力等级。 A. 3 B. 4 C. 5 答案:B 2、缓冲罐的安装位置在天然气压缩机( )。 A. 前 B. 后 C. 中间 答案&#…...
LLVM学习--外部项目
不包含于核心LLVM和Clang存储库的项目需要单独下载。在本章中,我们将介绍各种其他官方LLVM项目,并介绍如何构建和安装它们。仅仅对核心LLVM工具感兴趣的读者可以跳过本章,或者在需要的时候翻阅。 在本章中,我们将介绍以下项目安装…...
AUTOSAR_DoIP_Detailed
AUTOSAR DoIP模块详解 基于AUTOSAR标准的诊断通信协议实现 目录 架构概述通信流程消息格式配置结构详细序列总结1. 架构概述 1.1 模块架构 DoIP模块是AUTOSAR基础软件中负责诊断通信的核心组件。它通过TCP/IP网络实现诊断工具与ECU之间的通信。主要功能包括: 基础功能 基于UD…...
C语言:(大数相加版)数字阶梯求和
题目: 给定a和n,计算aaaaaaa...a(n个a)的和。 输入 测试数据有多组,输入a,n(1<a<9,1<n<100)。 输出 对于每组输入,请输出结果。 分析: 1. 方式和规定:大数相加必然越界…...
Echarts 折线图
功能 每月记录值,当数据大于600画红线,小于300画蓝线,其他在中间值为黑线。鼠标移动上去后,现在数据值。 option {tooltip: {trigger: axis, // 触发类型:坐标轴触发show: true, // 显示提示框formatter: function …...
element-plus中Dropdown下拉菜单组件的使用
1、基本使用 复制下面的代码: <!-- 选择查询类型 --> <el-dropdown trigger"click"><span class"el-dropdown-link"><span style"width:60px;color:#404040">查询类型</span><el-icon class"e…...
Kafka详解——介绍与部署
1. 什么是 Kafka? Kafka 是一个分布式的消息队列系统,最初由 LinkedIn 开发,后来成为 Apache 开源项目。它的主要用途包括实时数据处理、日志收集、数据流管道构建等。Kafka 具备高吞吐量、可扩展性、持久性和容错性,广泛应用于大…...