2025 蓝桥杯省赛c++B组个人题解
声明
本题解为退役蒻苟所写,不保证正确性,仅供参考。
花了大概2个半小时写完,感觉比去年省赛简单,难度大概等价于 codeforces dv4.5 吧
菜鸡不熟悉树上背包,调了一个多小时
题目旁边的是 cf 预测分
所有代码均以通过洛谷蓝桥杯同步题
A题
算一下弧长和半径即可得 1576
B题
正解 2 1022 m o d 1 0 9 + 7 = 781448427 2^{1022} \mod10^9+7=781448427 21022mod109+7=781448427
C: 可分解的正整数 (1000)
问题描述
判断给定正整数能否表示为长度≥3的连续整数序列之和。
输入格式
- 第一行:正整数N。
- 第二行:N个正整数A1,A2,…,AN。
输出格式
可分解的正整数数量。
样例输入
3
3 6 15
样例输出
3
评测用例规模
1≤N≤105,1≤Ai≤109。
题解
打一下表发现 106 以内所有数除了 1 以外都可以这样分解,因此答案即为非 1 的数的数量
#include <bits/stdc++.h>using namespace std;
void solve()
{int n;cin >> n;int ans = n;for (int i = 0; i < n; i++){int x;cin >> x;if (x == 1)ans--;}cout << ans << "\n";
}
int main()
{ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int _ = 1;// std::cin >> _;while (_--){solve();}return 0;
}
D: 产值调整 (1000)
问题描述
三矿山产值A,B,C每年按以下规则调整K次:
- A ′ = ⌊ ( B + C ) / 2 ⌋ A′=⌊(B+C)/2⌋ A′=⌊(B+C)/2⌋
- B ′ = ⌊ ( A + C ) / 2 ⌋ B′=⌊(A+C)/2⌋ B′=⌊(A+C)/2⌋
- C ′ = ⌊ ( A + B ) / 2 ⌋ C′=⌊(A+B)/2⌋ C′=⌊(A+B)/2⌋
输入格式
- 第一行:测试用例数T。
- 每行:A,B,C,K。
输出格式
调整后的A,B,C。
样例输入
2
10 20 30 1
5 5 5 3
样例输出
25 20 15
5 5 5
评测用例规模
1 ≤ T ≤ 1 0 5 1≤T≤10^5 1≤T≤105, 1 ≤ A , B , C , K ≤ 1 0 9 1≤A,B,C,K≤10^9 1≤A,B,C,K≤109。
题解
观察发现 A,B,C 都在向 A + B + C 3 \frac{A+B+C}{3} 3A+B+C 收敛,且速度很快,所以模拟一下直到三个相等即可。
#include <bits/stdc++.h>using namespace std;using ll = long long;
void solve()
{ll A, B, C, K;cin >> A >> B >> C >> K;while (K--){ll NA = (B + C) >> 1;ll NB = (A + C) >> 1;ll NC = (A + B) >> 1;A = NA, B = NB, C = NC;if (A == B && B == C)break;}cout << A << " " << B << " " << C << "\n";
}
int main()
{ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int _ = 1;std::cin >> _;while (_--){solve();}return 0;
}
E: 画展布置 (1200)
问题描述
从N幅画中选M幅排列,最小化艺术价值变化程度 L = ∑ M − 1 i = 1 ∣ B i + 1 2 − B i 2 ∣ L=∑^{i=1}_{M−1}|B_{i+1}^2−B_{i}^2| L=∑M−1i=1∣Bi+12−Bi2∣ 。
输入格式
- 第一行:N和M。
- 第二行:N个艺术价值A1,A2,…,AN。
输出格式
L的最小值。
评测用例规模
2 ≤ M ≤ N ≤ 1 0 5 ; 1 ≤ A i ≤ 1 0 5 2≤M≤N≤10^5;1≤Ai≤10^5 2≤M≤N≤105;1≤Ai≤105。
题解
题目要求从 N 幅画中选出 M 幅,并排成一列,使得艺术价值变化程度 L = ∑ M − 1 i = 1 ∣ B i + 1 2 − B i 2 ∣ L=∑^{i=1}_{M−1}|B_{i+1}^2−B_{i}^2| L=∑M−1i=1∣Bi+12−Bi2∣ 最小。
注意到只要将选中的画按某种顺序排列,如果能让各个相邻画作的 “平方值” 单调变化,则 L = B M 2 − B 1 2 L=B_M^2−B_1^2 L=BM2−B12,
其中 B12 和 BM2 分别是选中画作中最小和最大的平方值。
因为对于任意一个选定的集合,无论中间顺序如何,若将它们重新排序为“平方值”递增的顺序,其变化总和必定为 max ( B i 2 ) − min ( B i 2 ) \max(B_i^2)−\min(B_i^2) max(Bi2)−min(Bi2)
#include <bits/stdc++.h>using namespace std;using ll = long long;
void solve()
{int N, M;cin >> N >> M;vector<ll> A(N), S(N);for (int i = 0; i < N; i++){cin >> A[i];S[i] = A[i] * A[i];}sort(S.begin(), S.end());ll ans = LLONG_MAX;for (int i = 0; i + M - 1 < N; i++){ll diff = S[i + M - 1] - S[i];if (diff < ans)ans = diff;}cout << ans << "\n";
}
int main()
{ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int _ = 1;// std::cin >> _;while (_--){solve();}return 0;
}
F: 水质检测 (1600)
问题描述
在2×n河床上添加最少检测器,使所有检测器连通。
输入格式
- 两行:每行长度为n的字符串,
#表示检测器,.表示空白。
输出格式
最少需添加的检测器数。
样例输入
.# #.....#
.# .# .#...
样例输出
5
评测用例规模
1≤n≤106
题解
贪心解不可行,正解是dp。
对于每一列 i,我们先根据输入得到该列的检测器状态。
- 若第 1 行第 i 个位置为
#,则该列有上检测器,对应二进制位 1, s t a [ i ] ∣ = 1 sta[i]|=1 sta[i]∣=1 - 若第 2 行第 i 个位置为
#,则该列有下检测器,对应二进制位 2, s t a [ i ] ∣ = 2 sta[i]|=2 sta[i]∣=2
我们可以在每一列中选择是否添加检测器。由于我们要求连通,我们考虑只在从最左侧出现强制检测器的列到最右侧出现强制检测器的列这一连续区间内填充检测器。
在每一列,我们可以的最终状态是:
在该列放置检测器的情况用一个二进制数表示(1 表示上有检测器,2 表示下有检测器,3 表示两行都有);我们规定空列是不允许的,因为中断列会导致连通性断裂。因此在每一列的状态可以是 1、2 或 3。
设区间 [L, R] 为所有存在强制检测器的列的最小与最大列号。如果没有任何强制检测器,则答案为 0 。
令 d p [ i ] [ j ] dp[i][j] dp[i][j] 表示从列 L 到列 i,将第 i 列状态设为 j 且保证前后连通时的最小添加数。状态 j 只能取 1、2、3,但必须满足与 sta[i] 匹配。
转移方程:
对于第 i 列,遍历其允许状态 j,再枚举前一列 i−1 允许的状态 k 满足 j&k≠0 ,则
d p [ i ] [ j ] = m i n d p [ i − 1 ] [ k ] + c a l c ( j , k ) dp[i][j]=min{dp[i−1][k]+calc(j,k)} dp[i][j]=mindp[i−1][k]+calc(j,k)
设状态 j 取值为 1、2、3。在列 k,若我们选择状态 j,则需要补充的检测器数量为
c a l c ( j , k ) = p o p c o u n t ( k ) − p o p c o u n t ( s t a [ j ] ) calc(j,k)=popcount(k)−popcount(sta[j]) calc(j,k)=popcount(k)−popcount(sta[j])
其中 popcount 是状态中 1 的个数。例如:若 sta[i] = 0,状态 1 或 2 费用为 1,状态 3 费用为 2;若 sta[i] = 1,则状态 1 费用为 0,状态 3 费用为 1;以此类推。
#include <bits/stdc++.h>using namespace std;const int inf = 0x3f3f3f3f;void solve()
{string s1, s2;cin >> s1 >> s2;int n = s1.size();vector<int> sta(n);for (int i = 0; i < n; i++){if (s1[i] == '#')sta[i] |= 1;if (s2[i] == '#')sta[i] |= 2;}int L = n, R = -1;for (int i = 0; i < n; i++){if (sta[i] != 0){L = min(L, i);R = max(R, i);}}if (R == -1){cout << 0 << "\n";return;}vector<vector<int>> dp(n, vector<int>(4, inf));auto calc = [&](int p, int t) -> int{int cnt = 0;if (t & 1)cnt++;if (t & 2)cnt++;int num = 0;if (sta[p] & 1)num++;if (sta[p] & 2)num++;return cnt - num;};auto check = [&](int x, int t) -> bool{return (t & sta[x]) == sta[x] && (t != 0);};for (int i = 1; i < 4; i++){if (check(L, i))dp[L][i] = calc(L, i);}for (int i = L + 1; i <= R; i++){for (int j = 1; j < 4; j++){if (!check(i, j))continue;int add = calc(i, j);for (int k = 1; k < 4; k++){if (!check(i - 1, k))continue;if ((k & j) == 0)continue;dp[i][j] = min(dp[i][j], dp[i - 1][k] + add);}}}int ans = inf;for (int i = 1; i < 4; i++){if (check(R, i))ans = min(ans, dp[R][i]);}cout << ans << "\n";
}
int main()
{ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int _ = 1;// std::cin >> _;while (_--){solve();}return 0;
}
G: 生产车间 (1800)
问题描述
树形结构设备网络,叶节点生产材料,根节点打包成品。调整节点使所有节点产能不超限,求根节点最大打包量。
输入格式
- 第一行:设备数n。
- 第二行:各节点权值w1,w2,…,wn。
- 后续n−1行:树边。
输出格式
根节点的最大成品量。
样例输入
9
9 7 3 7 1 6 2 2 7
1 2
1 3
2 4
2 5
2 6
6 7
6 8
6 9
样例输出
8
评测用例规模
1 ≤ n ≤ 1 0 3 ; 1 ≤ w i ≤ 1 0 3 1≤n≤10^3;1≤wi≤10^3 1≤n≤103;1≤wi≤103
题解
跑一下树上背包即可,需要使用bitset优化。
对于每个节点 u,构造一个布尔数组 f [ u ] [ x ] f[u][x] f[u][x] , f [ u ] [ x ] = t r u e f[u][x]=true f[u][x]=true 表示在节点 u 被保留的情况下,通过对其子树的合理保留或删除,可以使得从 u 的所有子树传上来的材料总量达到 x, x≤w[u] 。
具体的状态转移为:
叶节点:只有两种选择
- 删除该节点,贡献 0(即 f [ u ] [ 0 ] = t r u e f[u][0]=true f[u][0]=true )
- 保留该节点,则其实际“产出”就是 w[u] 。
内部节点:初始时没有选择任何子树,状态为 0;
遍历每个子节点 v,其返回的状态集合 g 表示了子树可能传上的材料量,利用类似于背包的思路将不同子节点的贡献累加,但总和不能超过该节点的 w[u] 。
最终,在根节点处, f[1] 为打包能力,答案即为根节点的状态数组中能达到的最大流量值
#include <bits/stdc++.h>using namespace std;
void solve()
{int n;cin >> n;vector<int> w(n + 1);for (int i = 1; i <= n; i++){cin >> w[i];}vector<vector<int>> adj(n + 1);for (int i = 1; i <= n - 1; i++){int u, v;cin >> u >> v;adj[u].push_back(v);adj[v].push_back(u);}adj[1].push_back(0);function<vector<bool>(int, int)> dfs = [&](int u, int fa) -> vector<bool>{vector<bool> f(w[u] + 1);if (adj[u].size() == 1){f[0] = true;if (w[u] <= w[u])f[w[u]] = true;return f;}f[0] = true;for (auto &v : adj[u]){if (v == fa)continue;vector<bool> g = dfs(v, u);vector<bool> h(w[u] + 1);for (int i = 0; i <= w[u]; i++){if (!f[i])continue;for (int j = 0; j < g.size(); j++){if (g[j] && i + j <= w[u])h[i + j] = true;}}f.swap(h);}return f;};vector<bool> res = dfs(1, 0);int ans = 0;for (int i = 0; i <= w[1]; i++){if (res[i])ans = max(ans, i);}cout << ans << "\n";
}int main()
{ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int _ = 1;// std::cin >> _;while (_--){solve();}return 0;
}
H: 装修报价 (1600)
问题描述
老王计划装修房子,于是联系了一家装修公司。该公司有一套自动报价系统,只需用户提供 N 项装修相关费用 A1,A2,…,AN,系统便会根据这些费用生成最终的报价。
然而,当老王提交数据后,他发现这套系统的运作方式并不透明:系统只会给出一个最终报价,而不会公开任何运算过程或中间步骤。公司对此解释称,这套系统会依据某种内部算法,在每对相邻数字之间插入 +(加法)、−(减法)或 ⊕(异或)运算符,并按照特定优先级规则计算结果:异或运算优先级最高,其次是加减。
为了验证系统报价是否合理,老王决定模拟其运作方式,尝试每种可能的运算符组合,计算出所有可能出现的结果的总和。如果最终报价明显超出这个范围,他就有理由怀疑系统存在异常或误差。
现在,请你帮老王算出所有可能的结果的总和。由于该总和可能很大,你只需提供其对 109+7 取余后的结果即可。
输入格式
- 第一行输入一个整数 N,表示装修相关费用的项数。
- 第二行输入 N 个非负整数 A1,A2,…,AN,表示各项费用。
输出格式
输出一个整数,表示所有可能的总和对 109+7 取余后的结果。
示例输入
3
0 2 5
示例输出
11
示例说明
对于输入样例中的三个数 A=[0,2,5],所有可能的运算符组合共有 9 种。计算结果如下:
- 0⊕2⊕5=7
- 0⊕2+5=7
- 0⊕2−5=−3
- 0+2⊕5=7
- 0+2+5=7
- 0+2−5=−3
- 0−2⊕5=−7
- 0−2+5=3
- 0−2−5=−7
所有结果的总和为:
7+7+(−3)+7+7+(−3)+(−7)+3+(−7)=11
11 对 109+7 取余后的值依然为 11,因此,输出结果为 11。
评测用例规模
1 ≤ N ≤ 1 0 5 , 1 ≤ A i ≤ 1 0 9 1≤N≤10^5,1≤A_i≤10^9 1≤N≤105,1≤Ai≤109
题解
注意到:
- 在所有 ⊕ 连续的段内,其结果就是该段内所有数的异或值;
- 在相邻段之间的运算符为加或减,由于加减具有线性性质(先计算异或段,后做加减运算)可以发现,最终结果实际上为各“段”值的加权和,其中只有最左边那一段的符号“固定为 +”,而后续各段由于加减符号正负会相互抵消后求和。
具体看“分段”:
- 定义:设在相邻位置处如果选用非 ⊕ 运算符,则视为“断开”,形成新段。
- 因为每个位置独立选运算符,所以可以将所有可能的运算符组合看成对 N−1 个空位的选择,每个位置可以“接续”(即选 ⊕)或“断开”(即选加或减),而“断开”时又有 2 种符号选择。
观察发现:
- 若整个序列中没有断开,则只有一段,其结果为
G=A1⊕A2⊕⋯⊕AN - 若第一个断开出现在位置 j(也就是说从 A1 到 Aj 连续使用 ⊕),则第一段的“段值”为
G1=A1⊕A2⊕⋯⊕Aj
而后面不论如何选择(剩余位置随意),在加减阶段由于正负相互抵消,其对总和的贡献在对所有符号取和时,只有第一段的值会“留下”。 具体地:
- 固定第一断开出现在 j 的情况下,对于前 j−1 个间隙,必须全选 ⊕(1 种方式);
- 第 j 个空位选断开,有 2 种符号选择;
- 对于位置 j + 1 , … , N − 1 j+1,…,N−1 j+1,…,N−1 每个空位可任意选(3 种方式),总数为 3 N − 1 − j 3^{N−1−j} 3N−1−j.
故满足“第一断开位置为 j "的方案数为 2 ⋅ 3 N − 1 − j 2⋅3^{N−1−j} 2⋅3N−1−j
对于这些方案,最终计算(加减累加时)会固定地把第一段 G1 加入结果中(其他段各自正负总和为 0)。
于是,把所有方案按照是否出现断开以及第一断开的位次分情况讨论,最后所有可能最终结果的总和 S 为
无断开 S = G 无断开 + ∑ N − 1 j = 1 ( 2 ⋅ 3 N − 1 − j ) ⋅ ( A 1 ⊕ A 2 ⊕ ⋯ ⊕ A j ) S=G_{无断开}+∑^{j=1}_{N−1}(2⋅3^{N−1−j})⋅(A_1⊕A_2⊕⋯⊕A_j) S=G无断开+∑N−1j=1(2⋅3N−1−j)⋅(A1⊕A2⊕⋯⊕Aj).
这里 G = A 1 ⊕ A 2 ⊕ ⋯ ⊕ A N G=A_1⊕A_2⊕⋯⊕A_N G=A1⊕A2⊕⋯⊕AN。
#include <bits/stdc++.h>using namespace std;using ll = long long;const ll mod = 1000000007;
ll qmi(ll x, ll k, ll p = mod)
{x %= p;ll res = 1;while (k > 0){if (k & 1)res = (res * x) % p;x = (x * x) % p;k >>= 1;}return res;
}
void solve()
{int n;cin >> n;vector<ll> a(n + 1);vector<ll> preXor(n + 1, 0);for (int i = 1; i <= n; i++){cin >> a[i];preXor[i] = preXor[i - 1] ^ a[i];}vector<ll> p3(n);p3[0] = 1;for (int i = 1; i < n; i++){p3[i] = (p3[i - 1] * 3) % mod;}ll ans = preXor[n] % mod;for (int i = 1; i < n; i++){ll t = ((2ll * p3[n - 1 - i]) % mod * preXor[i]) % mod;ans = (ans + t) % mod;}cout << (ans % mod + mod) % mod << "\n";
}
int main()
{ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int _ = 1;// std::cin >> _;while (_--){solve();}return 0;
}
相关文章:
2025 蓝桥杯省赛c++B组个人题解
声明 本题解为退役蒻苟所写,不保证正确性,仅供参考。 花了大概2个半小时写完,感觉比去年省赛简单,难度大概等价于 codeforces dv4.5 吧 菜鸡不熟悉树上背包,调了一个多小时 题目旁边的是 cf 预测分 所有代码均以通…...
Centos7.9 升级内核,安装RTX5880驱动
系统镜像下载 https://vault.centos.org/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso 系统安装步骤省略 开始安装显卡驱动 远程登录查看内核 [root192 ~]# uname -a Linux 192.168.119.166 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x8…...
Xdocreport实现根据模板导出word
只使用freemaker生成简单的word文档很容易,但是当word文档需要插入动态图片,带循环数据,且含有富文本时解决起来相对比较复杂,但是使用Xdocreport可以轻易解决。 Xdocreport既可以实现文档填充也可以实现文档转换,此处…...
运行一次性任务与定时任务
运行一次性任务与定时任务 文章目录 运行一次性任务与定时任务[toc]一、使用Job运行一次性任务1.创建一次性任务2.测试一次性任务3.删除Job 二、使用CronJob运行定时任务1.创建定时任务2.测试定时任务3.删除CronJob 一、使用Job运行一次性任务 1.创建一次性任务 (…...
解决VS2022中scanf报错C4996
这个的原因是因为新版的VS认为scanf不安全,要去使用scanf_s,但在C语言中就需要scanf,所以我们只要以以下步骤解决就可以了。 只要加入宏定义即可 #define _CRT_SECURE_NO_WARNINGS 因为本人已经很少写小案例了,所以就用这个办法…...
当当平台商品详情接口设计与调用指南
当当平台商品详情接口设计与调用指南 接口名称 GET /api/product/detail 图书商品核心信息查询接口 请求参数说明 参数名称 类型 是否必填 说明 isbn string 是 国际标准书号(支持13位/10位) product_id string 否 平台内部商品编号(与…...
sql server分析表大小
使用自动存储过程查询 EXEC sp_spaceused YourTableName; rows:表中的行数。reserved:表占用的总空间(包括数据和索引)。data:表数据占用的空间。index_size:索引占用的空间。unused:未使用的空…...
《AI大模型应知应会100篇》第13篇:大模型评测标准:如何判断一个模型的优劣
第13篇:大模型评测标准:如何判断一个模型的优劣 摘要 近年来,大语言模型(LLMs)在自然语言处理、代码生成、多模态任务等领域取得了显著进展。然而,随着模型数量和规模的增长,如何科学评估这些模…...
Linux基础9
一、日志管理 > 日志配置文件: > > /var/log/messages #内核的消息以及各种服务的公共信息 > > /var/log/dmesg #系统启动过程信息 > > /var/log/cron #cron计划任务相关信息 > > /var…...
hyper-v server服务器部署远程访问(我目前环境:hyper-v服务器+路由器+公网ip)
Hyper-v server部署(裸金属方式) 系统镜像下载安装# 下载地址:17763.737.190906-2324.rs5_release_svc_refresh_SERVERHYPERCORE_OEM_x64FRE_zh-cn_1.iso 安装的过程很简单,和安装Windows操作系统没啥区别,这里就不记录了。 安装过程可参考:安装Hyper-v Server 2016 部…...
【区块链安全 | 第三十七篇】合约审计之获取私有数据(一)
文章目录 私有数据访问私有数据实例存储槽Solidity 中的数据存储方式1. storage(持久化存储)定长数组变长数组2. memory(临时内存)3. calldata可见性关键字私有数据存储风险安全措施私有数据 私有数据(Private Data)通常指的是只对特定主体可见或可访问的数据,在区块链…...
项目管理(高软56)
系列文章目录 项目管理 文章目录 系列文章目录前言一、进度管理二、配置管理三、质量四、风险管理五、真题总结 前言 本节主要讲项目管理知识,这些知识听的有点意思啊。对于技术人想创业,单干的都很有必要听听。 一、进度管理 二、配置管理 三、质量 四…...
程序化广告行业(79/89):技术革新与行业发展脉络梳理
程序化广告行业(79/89):技术革新与行业发展脉络梳理 大家好!一直以来,我都热衷于在技术领域不断探索,也深知知识共享对于进步的重要性。写这篇博客,就是希望能和大家一起深入研究程序化广告行业…...
零基础上手Python数据分析 (13):DataFrame 数据合并与连接 - 整合多源数据,构建完整分析视图
写在前面 —— 告别 VLOOKUP 烦恼,掌握 Pandas 合并连接利器,轻松整合分散数据 在前面的博客中,我们学习了如何读取数据、清洗数据、选取数据。 现在,我们已经能够处理单个 DataFrame 中的数据了。 然而,在实际的数据分析项目中,数据往往不是存储在一个单独的文件或表格…...
解决OBS里的鼠标太小|OBS鼠标尺寸问题
在进行OBS录制时,不少用户可能会被鼠标显示问题所困扰。比如,录制时鼠标在画面中尺寸过大,影响视觉效果;或是出现两个鼠标指针,显得杂乱无章。其实,借助一款名为Custom cursor的工具,这些问题便…...
OpenCV边缘检测方法详解
文章目录 引言一、边缘检测基础概念边缘类型 二、OpenCV中的边缘检测方法1. Sobel算子2. Scharr算子3. Laplacian算子4. Canny边缘检测 三、性能比较与选择建议四、总结 引言 边缘检测是计算机视觉和图像处理中的基础技术,它能有效识别图像中物体的边界,…...
寻找最大美丽数
# 输入:nums1 [4,2,1,5,3], nums2 [10,20,30,40,50], k 2 # 输出:[80,30,0,80,50] import random class Solution:def findMaxSum(self, nums1, nums2, k):hash_table []sum1 0data []print(**31,\n,\t数据)for key,values in enumerate(nums1):da…...
Linux:shell运行原理+权限
1.shell的运行原理 如果我们打开了命令终端或者是xshell进行远程登录服务器,就会看到命令行,如下图所示: 这个命令行本身也是系统中一个运行起来的程序,它用来接收用户的输入,帮用户来执行指令,将运行结果展…...
跨站请求是什么?
介绍 跨站请求(Cross-Site Request)通常是指浏览器在访问一个网站时,向另一个域名的网站发送请求的行为。这个概念在 Web 安全中非常重要,尤其是在涉及到“跨站请求伪造(CSRF)”和“跨域资源共享ÿ…...
【LeetCode Solutions】LeetCode 160 ~ 165 题解
CONTENTS LeetCode 160. 相交链表(简单)LeetCode 162. 寻找峰值(中等)LeetCode 164. 最大间距(中等)LeetCode 165. 比较版本号(中等) LeetCode 160. 相交链表(简单&#…...
Openssl升级至openssl9.8p1含全部踩坑内容
1、安装依赖包基础条件 yum install gcc yum install gcc-c yum install perl yum install perl-IPC-Cmd yum install pam yum install pam-devel sudo yum install perl-Data-Dumper 问题一:提示yum不可用 镜像源问题更换阿里源即可 wget -O /etc/yum.repos.d/…...
ASP.NET Core 性能优化:内存缓存
文章目录 前言一、什么是缓存二、内存缓存三、使用内存缓存1)注册内存缓存服务2)注入与基本使用3)高级用法GetOrCreate(避免缓存穿透)异步方法:GetOrCreateAsync(避免缓存穿透)两种过…...
二战蓝桥杯所感
🌴 前言 今天是2025年4月12日,第十六届蓝桥杯结束,作为二战的老手,心中还是颇有不甘的。一方面,今年的题目比去年简单很多,另一方面我感觉并没有把能拿的分都拿到手,这是我觉得最遗憾的地方。不…...
屏幕模块解析
通信协议 SPI 引脚定义 GPIO说明引脚配置SCK时钟线推挽输出MOSI主机输出、从机输入推挽输出MISO主机输入、从机输出浮空/上拉输入:没有开启数据传输时为高阻态SS片选推挽输出CPOL时钟极性0:空闲时SCK为低电平 1:空闲时SCK为高电平 CPHA时钟相位0:主从SCK第一个边沿输入1bi…...
查看手机在线状态,保障设备安全运行
手机作为人们日常生活中不可或缺的工具,承载着沟通、工作、娱乐等多种功能。保障手机设备的安全运行是我们每个人都非常重要的任务,而了解手机的在线状态则是其中的一环。通过挖数据平台提供的在线查询工具,我们可以方便快捷地查询手机号的在…...
#关于数据库中的时间存储
✅ 一、是否根据“机器当前时区”得到本地时间再转 UTC? 结论:是的,但仅对 TIMESTAMP 字段生效。 数据库(如 MySQL)在插入 TIMESTAMP 类型数据时: 使用当前会话的时区(默认跟随系统时区&#…...
第16届蓝桥杯省赛python B组个人题解
文章目录 前言ABCDEFGH 前言 仅个人回忆,不保证正确性 貌似都是典题,针对python的长代码模拟题也没有,一小时速通了,希望不要翻车。 更新:B、G翻车了。。 A 答案:103 B 应该是按长度排序,然后…...
lvs+keepalived+dns高可用
1.配置dns相关服务 1.1修改ip地址主机名 dns-master: hostnamectl hostname lvs-master nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.107/24 ipv4.gateway 10.10.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes nmcli c up ens160dns-salve: h…...
Spark RDD相关概念
Spark运行架构与核心组件 1.Spark运行梁构 spark运行架构包括master和slave两个主要部分。master负责管理整个集群的作业任务调度,而slave则负责实际执行任务。 dirver是Spark驱动器节点,负责执行Spark任务中的main方法,将用户程序转换成作业…...
雷池WAF防火墙如何构筑DDoS防护矩阵?——解读智能语义解析对抗新型流量攻击
本文深度解析雷池WAF防火墙在DDoS攻防中的技术突破,通过智能语义解析、动态基线建模、协同防护体系三大核心技术,实现从流量特征识别到攻击意图预判的进化。结合2023年金融行业混合攻击防御案例,揭示新一代WAF如何通过协议级漏洞预判与AI行为…...
