第十六届蓝桥杯大赛软件赛C/C++大学B组部分题解
第十六届蓝桥杯大赛软件赛C/C++大学B组题解
试题A: 移动距离
问题描述
小明初始在二维平面的原点,他想前往坐标(233,666)。在移动过程中,他只能采用以下两种移动方式,并且这两种移动方式可以交替、不限次数地使用:
- 水平向右移动,即沿着x轴正方向移动一定的距离。
- 沿着一个圆心在原点(0,0)、以他当前位置到原点的距离为半径的圆的圆周移动,移动方向不限(即顺时针或逆时针移动不限)。
在这种条件下,他到达目的地最少移动多少单位距离?你只需要输出答案四舍五入到整数的结果。
解题思路
这个问题可以转化为:如何从原点到达目标点,使得路径长度最小。
首先,我们可以观察到,如果目标点在x轴上,那么直接水平向右移动是最优的。
对于一般情况,我们可以分两步走:
- 先沿着x轴正方向移动到点(r,0),其中r是目标点到原点的距离
- 然后沿着半径为r的圆弧移动到目标点
目标点(233,666)到原点的距离为:
r = √(233² + 666²) = √(54289 + 443556) = √497845 ≈ 705.58
第一步移动距离为r = 705.58
第二步需要计算圆弧长度。目标点与x轴正方向的夹角为:
θ = arctan(666/233) ≈ 1.2323弧度
圆弧长度 = r·θ = 705.58 × 1.2323 ≈ 869.49
总移动距离 = 705.58 + 869.49 = 1575.07
四舍五入到整数为1575。
答案
1575
试题C: 可分解的正整数
问题描述
定义一种特殊的整数序列,这种序列由连续递增的整数组成,并满足以下条件:
- 序列长度至少为3。
- 序列中的数字是连续递增的整数(即相邻元素之差为1),可以包括正整数、负整数或0。
例如,[1,2,3]、[4,5,6,7]和[-1,0,1]是符合条件的序列,而[1,2](长度不足)和[1,2,4](不连续)不符合要求。
现给定一组包含N个正整数的数据A₁,A₂,…,A_N。如果某个A_i能够表示为符合上述条件的连续整数序列中所有元素的和,则称A_i是可分解的。请你统计这组数据中可分解的正整数的数量。
解题思路
代码实现
#include<bits/stdc++.h>
using namespace std;int main(){int n;int t;int ans = 0;cin>>n;for(int i = 0;i < n;i++){cin>>t;if(t != 1){ans++;}}cout<<ans<<endl;return 0;
}
试题D: 产值调整
问题描述
偏远的小镇上,三兄弟共同经营着一家小型矿业公司"兄弟矿业"。公司旗下有三座矿山:金矿、银矿和铜矿,它们的初始产值分别用非负整数A、B和C表示。
为了稳定经营,三兄弟设计了一个产值调整策略,每年执行一次,每次调整时,将根据当前的产值A、B、C,计算新产值:
- 金矿新产值A′=⌊(B+C)/2⌋;
- 银矿新产值B′=⌊(A+C)/2⌋;
- 铜矿新产值C′=⌊(A+B)/2⌋。
其中,⌊⌋表示向下取整。计算出A′、B′、C′后,同时更新:A变为A′,B变为B′,C变为C′,作为下一年调整的基础。
三兄弟计划连续执行K次调整。现在,请你帮他们计算,经过K次调整后,金矿、银矿和铜矿的产值分别是多少。
解题思路
我们可以直接模拟这个过程,但由于K可能很大(最大10^9),直接模拟会超时。
观察调整规则,我们可以发现:
- 如果A=B=C,那么调整后仍然是A=B=C
- 如果不相等,每次调整后的值会趋向于平均值
实际上,经过足够多次调整后,三个值会变得相等或者在一个很小的范围内循环。
通过数学分析和实验,我们可以发现:
- 如果初始值全部相等,那么调整后仍然相等
- 如果不全相等,经过最多6次调整,三个值要么全部相等,要么会进入一个长度不超过3的循环
因此,我们可以先模拟前几次调整,然后根据情况决定最终结果。
代码实现
#include <bits/stdc++.h>
using namespace std;void adjust(long long& a, long long& b, long long& c) {long long new_a = (b + c) / 2;long long new_b = (a + c) / 2;long long new_c = (a + b) / 2;a = new_a;b = new_b;c = new_c;
}int main() {int T;cin >> T;while (T--) {long long A, B, C, K;cin >> A >> B >> C >> K;// 如果已经相等,不需要调整if (A == B && B == C) {cout << A << " " << B << " " << C << endl;continue;}while(K--){adjust(A,B,C);// 如果已经相等,不需要调整if (A == B && B == C) {break;}}cout << A << " " << B << " " << C << endl;}return 0;
}
对于样例输入:
-
A=10, B=20, C=30, K=1
-
一次调整后:A′=25, B′=20, C′=15
-
A=5, B=5, C=5, K=3
-
初始值已经相等,调整后仍然是A=5, B=5, C=5
试题E: 画展布置
问题描述
画展策展人小蓝和助理小桥为即将举办的画展准备了N幅画作,其艺术价值分别为A₁,A₂,…,A_N。他们需要从这N幅画中挑选M幅,并按照一定顺序布置在展厅的M个位置上。
为了优化布置,他们希望使艺术价值的变化程度通过一个数值L来衡量,且该值越小越好。数值L的定义为:
L = Σ(i=1 to M-1) |B²ᵢ₊₁ - B²ᵢ|
其中B_i表示展厅第i个位置上画作的艺术价值。
现在,他们希望通过精心挑选和排列这M幅画作,使L达到最小值。请你帮他们计算出这个最小值是多少。
解题思路
这个问题要求我们从N幅画中选择M幅,并排列它们,使得相邻画作艺术价值平方的差的绝对值之和最小。
首先,我们可以观察到,对于任意两幅画的艺术价值a和b,|a² - b²| = |a-b|·|a+b|。这意味着,如果我们想要最小化|a² - b²|,我们应该选择艺术价值接近的画作放在相邻位置。
一个直观的策略是:
- 对所有画作的艺术价值进行排序
- 选择M幅连续的画作(因为连续的画作艺术价值差异最小)
- 按照特定顺序排列这M幅画作,使得L最小
对于排列顺序,我们可以证明,最优的排列方式是按照艺术价值从小到大或从大到小排列。
代码实现
#include <bits/stdc++.h>
using namespace std;int main() {int N, M;cin >> N >> M;vector<int> values(N);for (int i = 0; i < N; i++) {cin >> values[i];}// 排序sort(values.begin(), values.end());// 计算所有可能的连续M幅画作的L值long long min_L = LLONG_MAX;for (int i = 0; i <= N - M; i++) {vector<int> selected(values.begin() + i, values.begin() + i + M);// 计算按照从小到大排列的L值long long L1 = 0;for (int j = 0; j < M - 1; j++) {long long diff = (long long)selected[j+1] * selected[j+1] - (long long)selected[j] * selected[j];L1 += abs(diff);}// 计算按照从大到小排列的L值long long L2 = 0;for (int j = 0; j < M - 1; j++) {long long diff = (long long)selected[M-j-2] * selected[M-j-2] - (long long)selected[M-j-1] * selected[M-j-1];L2 += abs(diff);}min_L = min(min_L, min(L1, L2));}cout << min_L << endl;return 0;
}
对于样例输入:
N=4, M=2, 艺术价值为[1, 5, 2, 4]
排序后为[1, 2, 4, 5]
可能的连续2幅画作为:[1,2], [2,4], [4,5]
计算L值:
- [1,2]: |2² - 1²| = |4 - 1| = 3
- [2,4]: |4² - 2²| = |16 - 4| = 12
- [4,5]: |5² - 4²| = |25 - 16| = 9
最小的L值为3。
试题F: 水质检测
问题描述
小明需要在一条2×n的河床上铺设水质检测器。在他铺设之前,河床上已经存在一些检测器。如果两个检测器上下或者左右相邻,那么这两个检测器就是互相连通的。连通具有传递性,即如果A和B连通,B和C连通,那么A和C也连通。现在他需要在河床上增加铺设一些检测器使得所有的检测器都互相连通。他想知道最少需要增加铺设多少个检测器?
解题思路
题目要求在一个2×n的河床上增加最少的检测器,使得所有检测器互相连通。河床用一个2×n的字符矩阵表示,其中’#‘表示已有检测器,’.'表示空白位置。如果两个检测器上下或左右相邻,则它们互相连通,且连通具有传递性。
这道题目可以使用动态规划来解决。我们需要考虑如何让所有检测器连通,并且使新增的检测器数量最少。
状态定义
我们定义状态dp[i][j]
表示:当处理到第i列,且第i列的第j行为’#'(无论是原有的还是新放置的),并且前i列的所有检测器都连通时,需要新增的最少检测器数量。
其中:
- i表示列号,范围是[st, en],st是最左边有检测器的列,en是最右边有检测器的列
- j表示行号,取值为0或1,分别表示第一行和第二行
状态转移
对于位置(i,j),我们有两种可能的转移来源:
- 从(i-1,j)转移:即上一列同一行的位置
- 从(i-1,1-j)转移:即上一列不同行的位置,但这需要通过当前列的另一行(i,1-j)连接
下面用图示来说明状态转移:
列i-1 列i□ ---- □ (行0)| |□ ---- □ (行1)
假设我们当前要计算dp[i][0]
(即列i 行0的状态):
- 从
dp[i-1][0]
转移:
列i-1 列i# ---- # (行0)| |□ □ (行1)
- 如果(i,0)是’#‘,且(i-1,0)也是’#',它们自然连通。
- 如果(i,0)不是’#',需要放置一个检测器,花费+1。
- 从
dp[i-1][1]
转移:
列i-1 列i□ # (行0)| |# ---- □ (行1)
- 如果(i,0)是’#‘,且(i-1,1)也是’#‘,要与(i,0)连通,需要通过(i,1),当(i,1)不是’#'时,就需要放置一个检测器,故花费+(
s[i][1]
== ‘#’ ? 0 : 1)。 - 如果(i,0)不是’#',那么(i,0)需要放置一个检测器,花费+(
s[i][0]
== ‘#’ ? 0 : 1)。
状态转移方程如下:
- 如果
s[i][j]
已经是’#'(已有检测器):
dp[i][j] = min(dp[i-1][j], dp[i-1][1-j] + (s[i][1-j]=='#'?0:1))
- 如果
s[i][j]
是’.'(需要放置检测器):
dp[i][j] = min(dp[i-1][j], dp[i-1][1-j] + (s[i][1-j]=='#'?0:1)) + 1
边界条件
对于起始位置st(最左边有检测器的位置):
- 如果
s[st][0]
是’#',则dp[st][0]
=0 - 如果
s[st][0]
是’.',则dp[st][0]=1
(需要放置一个检测器) - 同理处理
dp[st][1]
如果起始位置两行都有检测器,需要确保它们连通,此时dp[st][0]
=dp[st][1]
=0。
最终结果
最终答案是min(dp[en][0]
, dp[en][1]
),表示在最右边有检测器的位置en,使得所有检测器连通的最小花费。
代码实现
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+30;char s[N][2];
int dp[N][2]; // dp[i][j]表示当前第i列第j行为'#'且与前面的检测器连通时的最小花费void way(){string t;int n;// 数据输入for(int j=0;j<2;j++){cin>>t;// 读入一个字符串n = t.size();for(int i=1;i<=n;i++)s[i][j] = t[i-1];}int st = n+1,en = 0; // 找到左右两边的起始位置(最左边有检测器的位置)和(最右边有检测器的位置)。for(int i=1;i<=n;i++){if(s[i][0]=='#'||s[i][1]=='#'){st = min(i,st);en = max(en,i);}}// 初始化dp数组memset(dp, 0x3f, sizeof(dp)); // 初始化为一个很大的值// 处理起始位置if(s[st][0]=='#') dp[st][0]=0; // 如果已经有检测器,花费为0else dp[st][0]=1; // 否则需要放置一个检测器,花费为1if(s[st][1]=='#') dp[st][1]=0; // 如果已经有检测器,花费为0else dp[st][1]=1; // 否则需要放置一个检测器,花费为1// 如果起始位置两行都有检测器,需要确保它们连通if(s[st][0]=='#' && s[st][1]=='#') {dp[st][0] = dp[st][1] = 0; // 两个位置都已有检测器,花费为0}for(int i=st+1;i<=en;i++){// 计算dp[i][0]if(s[i][0]=='#') { // 如果当前位置已有检测器// 从上一列转移dp[i][0] = min(dp[i-1][0], dp[i-1][1] + (s[i][1]=='#'?0:1));} else { // 如果当前位置需要放置检测器dp[i][0] = min(dp[i-1][0], dp[i-1][1] + (s[i][1]=='#'?0:1)) + 1;}// 计算dp[i][1]if(s[i][1]=='#') { // 如果当前位置已有检测器// 从上一列转移dp[i][1] = min(dp[i-1][1], dp[i-1][0] + (s[i][0]=='#'?0:1));} else { // 如果当前位置需要放置检测器dp[i][1] = min(dp[i-1][1], dp[i-1][0] + (s[i][0]=='#'?0:1)) + 1;}}cout<<min(dp[en][0],dp[en][1])<<endl;
}int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);way();return 0;
}
示例分析
让我们以样例为例,详细分析算法的执行过程:
输入:
.##.....#
.#.#.#...
我们可以将其表示为一个2×9的矩阵(为了方便,列号从1开始):
列号: 1 2 3 4 5 6 7 8 9
行0: . # # . . . . . #
行1: . # . # . # . . .
1. 确定计算范围
首先找到st=2(最左边有检测器的位置)和en=9(最右边有检测器的位置)。
2. 初始化dp数组
初始化dp数组为一个很大的值(表示无法到达的状态)。
对于起始位置st=2:
- s[2] [0]=‘#’,所以dp[2] [0]=0(已有检测器,不需要额外花费)
- s[2] [1]=‘#’,所以dp[2] [1]=0(已有检测器,不需要额外花费)
由于第2列的两行都有检测器,它们已经连通,所以dp[2] [0]=dp[2] [1]=0。
3. 逐列计算dp值
对于i=3(第3列):
计算dp[3] [0]:
- s[3] [0]=‘#’(已有检测器)
- 从dp[2] [0]转移:dp[2] [0]=0
- 从dp[2] [1]转移:dp[2] [1]=0,但需要通过(3,1)连接,s[3] [1]=‘.’,需要额外放置一个检测器,所以花费为0+1=1
- 取最小值:dp[3] [0]=min(0,1)=0
计算dp[3] [1]:
- s[3] [1]=‘.’(需要放置检测器)
- 从dp[2] [1]转移:dp[2] [1]=0
- 从dp[2] [0]转移:dp[2] [0]=0,但需要通过(3,0)连接,s[3] [0]=‘#’,不需要额外放置检测器,所以花费为0+0=0
- 由于(3,1)需要放置检测器,额外花费1,所以dp[3] [1]=min(0,0)+1=1
对于i=4(第4列):
计算dp[4] [0]:
- s[4] [0]=‘.’(需要放置检测器)
- 从dp[3] [0]转移:dp[3] [0]=0
- 从dp[3] [1]转移:dp[3] [1]=1,但需要通过(4,1)连接,s[4] [1]=‘#’,不需要额外放置检测器,所以花费为1+0=1
- 由于(4,0)需要放置检测器,额外花费1,所以dp[4] [0]=min(0,1)+1=1
计算dp[4] [1]:
- s[4] [1]=‘#’(已有检测器)
- 从dp[3] [1]转移:dp[3] [1]=1
- 从dp[3] [0]转移:dp[3] [0]=0,但需要通过(4,0)连接,s[4] [0]=‘.’,需要额外放置一个检测器,所以花费为0+1=1
- 取最小值:dp[4] [1]=min(1,1)=1
对于i=5(第5列):
计算dp[5] [0]:
- s[5] [0]=‘.’(需要放置检测器)
- 从dp[4] [0]转移:dp[4] [0]=1
- 从dp[4] [1]转移:dp[4] [1]=1,但需要通过(5,1)连接,s[5] [1]=‘.’,需要额外放置一个检测器,所以花费为1+1=2
- 由于(5,0)需要放置检测器,额外花费1,所以dp[5] [0]=min(1,2)+1=2
计算dp[5] [1]:
- s[5] [1]=‘.’(需要放置检测器)
- 从dp[4] [1]转移:dp[4] [1]=1
- 从dp[4] [0]转移:dp[4] [0]=1,但需要通过(5,0)连接,s[5] [0]=‘.’,需要额外放置一个检测器,所以花费为1+1=2
- 由于(5,1)需要放置检测器,额外花费1,所以dp[5] [1]=min(1,2)+1=2
对于i=6(第6列):
计算dp[6] [0]:
- s[6] [0]=‘.’(需要放置检测器)
- 从dp[5] [0]转移:dp[5] [0]=2
- 从dp[5] [1]转移:dp[5] [1]=2,但需要通过(6,1)连接,s[6] [1]=‘#’,不需要额外放置检测器,所以花费为2+0=2
- 由于(6,0)需要放置检测器,额外花费1,所以dp[6] [0]=min(2,2)+1=3
计算dp[6] [1]:
- s[6] [1]=‘#’(已有检测器)
- 从dp[5] [1]转移:dp[5] [1]=2
- 从dp[5] [0]转移:dp[5] [0]=2,但需要通过(6,0)连接,s[6] [0]=‘.’,需要额外放置一个检测器,所以花费为2+1=3
- 取最小值:dp[6] [1]=min(2,3)=2
对于i=7(第7列):
计算dp[7] [0]:
- s[7] [0]=‘.’(需要放置检测器)
- 从dp[6] [0]转移:dp[6] [0]=3
- 从dp[6] [1]转移:dp[6] [1]=2,但需要通过(7,1)连接,s[7] [1]=‘.’,需要额外放置一个检测器,所以花费为2+1=3
- 由于(7,0)需要放置检测器,额外花费1,所以dp[7] [0]=min(3,3)+1=4
计算dp[7] [1]:
- s[7] [1]=‘.’(需要放置检测器)
- 从dp[6] [1]转移:dp[6] [1]=2
- 从dp[6] [0]转移:dp[6] [0]=3,但需要通过(7,0)连接,s[7] [0]=‘.’,需要额外放置一个检测器,所以花费为3+1=4
- 由于(7,1)需要放置检测器,额外花费1,所以dp[7] [1]=min(2,4)+1=3
对于i=8(第8列):
计算dp[8] [0]:
- s[8] [0]=‘.’(需要放置检测器)
- 从dp[7] [0]转移:dp[7] [0]=4
- 从dp[7] [1]转移:dp[7 ] [1]=3,但需要通过(8,1)连接,s[8] [1]=‘.’,需要额外放置一个检测器,所以花费为3+1=4
- 由于(8,0)需要放置检测器,额外花费1,所以dp[8] [0]=min(4,4)+1=5
计算dp[8] [1]:
- s[8] [1]=‘.’(需要放置检测器)
- 从dp[7] [1]转移:dp[7] [1]=3
- 从dp[7] [0]转移:dp[7] [0]=4,但需要通过(8,0)连接,s[8] [0]=‘.’,需要额外放置一个检测器,所以花费为4+1=5
- 由于(8,1)需要放置检测器,额外花费1,所以dp[8] [1]=min(3,5)+1=4
对于i=9(第9列):
计算dp[9] [0]:
- s[9] [0]=‘#’(已有检测器)
- 从dp[8] [0]转移:dp[8] [0]=5
- 从dp[8] [1]转移:dp[8] [1]=4,但需要通过(9,1)连接,s[9] [1]=‘.’,需要额外放置一个检测器,所以花费为4+1=5
- 取最小值:dp[9] [0]=min(5,5)=5
计算dp[9] [1]:
- s[9] [1]=‘.’(需要放置检测器)
- 从dp[8] [1]转移:dp[8] [1]=4
- 从dp[8] [0]转移:dp[8] [0]=5,但需要通过(9,0)连接,s[9] [0]=‘#’,不需要额外放置检测器,所以花费为5+0=5
- 由于(9,1)需要放置检测器,额外花费1,所以dp[9] [1]=min(4,5)+1=5
4. 计算最终结果
最终答案是min(dp[9] [0], dp[9] [1])=min(5, 5)=5,表示需要增加5个检测器使所有检测器连通。
可视化最终方案
一种可能的最终方案('+'表示新增的检测器):
列号: 1 2 3 4 5 6 7 8 9
行0: . # # + + . . . #
行1: . # . # . # + + .
或者:
列号: 1 2 3 4 5 6 7 8 9
行0: . # # . . . . + #
行1: . # + # + # + + .
这两种方案都需要增加5个检测器,使所有检测器连通。
相关文章:
第十六届蓝桥杯大赛软件赛C/C++大学B组部分题解
第十六届蓝桥杯大赛软件赛C/C大学B组题解 试题A: 移动距离 问题描述 小明初始在二维平面的原点,他想前往坐标(233,666)。在移动过程中,他只能采用以下两种移动方式,并且这两种移动方式可以交替、不限次数地使用: 水平向右移动…...
服务器数据恢复—Linux操作系统服务器意外断电导致部分文件丢失的数据恢复
服务器数据恢复环境&故障: 一台安装linux系统的服务器意外断电。管理员重启服务器后进行检测,发现服务器上部分文件丢失。管理员没有进行任何操作,直接将服务器正常关机并切断电源。 服务器数据恢复过程: 1、北亚企安数据恢复…...
技术视界 | 青龙机器人训练地形详解(三):复杂地形精讲之台阶
在前两篇中,我们依次讲解了“如何创建一个地形”以及“如何将地形添加到训练环境中”。从基础出发,逐步构建机器人可交互的三维仿真环境。在机器人强化学习训练中,地形的复杂度决定了策略的泛化能力,仅靠 jump_plat 和 jump_pit 等…...
Android 位掩码操作(和~和|的二进制运算)
在 Android 开发中,位掩码操作通过二进制位的逻辑运算实现高效的状态管理。以下以 &(与)、|(或)和 ~(非)运算符为例,详细说明其二进制计算过程: 一、按位与 & 运…...
【JS逆向基础】前端基础-HTML与CSS
1,flask框架 以下是一个使用flask框架写成的serve程序 # noinspection PyUnresolvedReferences #Flash框架的基本内容from flask import Flask app Flask(__name__)app.route(/index) def index():return "hello index"app.route(/login) def login():re…...
高速供电,一步到位——以太联-Intellinet 9口2.5G PoE++非管理型交换机_562140:网络升级的理想之选
在数字化浪潮席卷全球的当下,高速稳定的网络连接已成为企业运营、家庭娱乐以及各类智能场景正常运转的基石。从企业办公场景中员工对高效协同办公的追求,到家庭环境里用户对流畅高清视频、在线游戏的渴望,再到智慧城市建设中大量监控设备、无…...
rom定制系列------红米note12 5G版miui14修改型号root版 原生安卓14批量线刷固件 原生安卓15等
红米Note 12 5G机型也称为 Note 12R Pro,机型代码:sunstone 高通骁龙4 Gen1八核处理器适用于以下型号的小米机型:22111317G, 22111317I, 22101317C miui14稳定版 14.0.10安卓13固件 根据客户需求,采用miui最后一个版本。修改以…...
机器学习 数据集
数据集 1. scikit-learn工具介绍1.1 scikit-learn安装1.2 Scikit-learn包含的内容 2 数据集2.1 sklearn玩具数据集介绍2.2 sklearn现实世界数据集介绍2.3 sklearn加载玩具数据集示例1:鸢尾花数据示例2:分析糖尿病数据集 2.4 sklearn获取现实世界数据集示…...
JVM运行时数据区域(Run-Time Data Areas)的解析
# JVM运行时数据区域(Run-Time Data Areas)的解析 欢迎来到我的博客:TWind的博客 我的CSDN::Thanwind-CSDN博客 我的掘金:Thanwinde 的个人主页 本文参考于:深入理解Java虚拟机:JVM高级特性与最佳实践 本文的JVM均…...
python基础:序列和索引-->Python的特殊属性
一.序列和索引 1.1 用索引检索字符串中的元素 # 正向递增 shelloworld for i in range (0,len(s)):# i是索引print(i,s[i],end\t\t) print(\n--------------------------) # 反向递减 for i in range (-10,0):print(i,s[i],end\t\t)print(\n--------------------------) print(…...
在k8s中,如何实现服务的访问,k8s的ip是变化的,怎么保证能访问到我的服务
在K8S中,Pod的IP动态变化确实无法直接通过固定IP限制访问,但可以通过标签(Label)、服务(Service)和网络策略(NetworkPolicy)的组合,实现动态身份识别的访问控制ÿ…...
用NVivo革新企业创新:洞悉市场情绪,引领金融未来
在当今快速变化的商业环境中,理解市场和客户的情感脉动是企业成功的关键。尤其在金融行业,无论是评估经济走势、股票市场波动,还是洞察消费者信心,精准把握隐藏在新闻报道、社交媒体和消费者反馈中的情感倾向至关重要。而NVivo这款…...
如何使用极狐GitLab 软件包仓库功能托管 helm chart?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 软件包库中的 Helm charts (BASIC ALL) WARNING:Helm chart 库正在开发中,由于功能有限,尚未准备好用…...
Qt 通过控件按钮实现hello world + 命名规范(7)
文章目录 使用编辑框来完成 hello world通过编辑图形化界面方式通过纯代码方式 通过按钮的方式来创建 hello world通过编辑图形化界面方式通过纯代码方式 总结Qt Creator中的快捷键如何使用文档命名规范 简介:这篇文章着重点并不在于创建hello world程序,…...
uniapp index.html怎么改都不生效
打开 manifest.json index.html 模板路径默认为空,所以你改的 index.html 是没用的,uni-app 根本没用这个模板 设置模板后就会生效了...
ABP vNext + gRPC 实现服务间高速通信
ABP vNext gRPC 实现服务间高速通信 💨 在现代微服务架构中,服务之间频繁的调用往往对性能构成挑战。尤其在电商秒杀、金融风控、实时监控等对响应延迟敏感的场景中,传统 REST API 面临序列化负担重、数据体积大、通信延迟高等瓶颈。 本文…...
【JAVA】十三、基础知识“接口”精细讲解!(三)(新手友好版~)
目录 1. Object类 1.1 Object的概念 1.2 Object例子 2. toString 2.1 toString的概念 2.2 为什么要重写toString 2.3 如何重写toString 3. 对象比较equals方法 3.1 equals( ) 方法的概念 3.2 Object类中的默认equals实现 3.3 如何正确重写equals方法 4. hashCode方…...
每周靶点分享:Angptl3、IgE、ADAM9及文献分享:抗体的多样性和特异性以及结构的新见解
本期精选了《脂质代谢的关键调控者Angptl3》《T细胞活化抑制因子VISTA靶点》《文献分享:双特异性抗体重轻链配对设计》三篇文章。以下为各研究内容的概述: 1. 脂质代谢的关键调控者Angptl3 血管生成素相关蛋白3(Angptl3)是血管生…...
网络协议之DHCP和PXE分析
写在前面 本文看下DHCP和PXE相关内容。 1:正文 不知道你自己手动配置过IP地址没有,在Linux的环境中可以通过如下的命令们来进行配置: $ sudo ifconfig eth1 10.0.0.1/24 $ sudo ifconfig eth1 up以及:$ sudo ip addr add 10.0…...
SSH 服务部署指南
本指南涵盖 OpenSSH 服务端的安装、配置密码/公钥/多因素认证,以及连接测试方法。 适用系统:Ubuntu/Debian、CentOS/RHEL 等主流 Linux 发行版。 1. 安装 SSH 服务端 Ubuntu/Debian # 更新软件包索引 sudo apt update# 安装 OpenSSH 服务端 sudo apt i…...
表达式求值(算法题)
#include <bits/stdc.h> // 引入常用头文件 using namespace std;stack<int> num; // 存储操作数的栈 stack<char> op; // 存储运算符的栈/* 执行一次运算操作:1. 从num栈弹出两个操作数(n2先弹出,作为右操作数)2. 从op栈弹出运算符…...
IO流--13--MultipartFile
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 MultipartFile1. 概述2. 常用方法解析2.1 getName方法2.2 getOriginalFileName方法2.3 getContentType方法2.4 isEmpty方法2.5 getSize方法2.6 getBytes方法2.7 get…...
leetcode 242. Valid Anagram
题目描述 因为s和t仅仅包含小写字母,所以可以开一个26个元素的数组用来做哈希表。不过如果是unicode字符,那就用编程语言自带的哈希表。 class Solution { public:bool isAnagram(string s, string t) {int n s.size();if(s.size() ! t.size())return …...
内核态函数strlcpy及strscpy以及用户态函数strncpy
一、背景 编写C程序时有一类看似简单实则经常暗藏漏洞的问题就是字符串的处理。对于字符串的处理,常用的函数如strcpy,sprintf,strcat等,这些函数的区别无外乎就是处理\0结尾相关的逻辑。字符串的长度有时候并不能很好确定&#…...
Matlab 车辆四自由度垂向模型平稳性
1、内容简介 Matlab221-车辆四自由度垂向模型平稳性 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略基于Simulink的汽车平顺性仿真_1_杜充 基于Simulink的汽车平顺性仿真分析_谢俊淋...
【hadoop】Sqoop数据迁移工具的安装部署
一、Sqoop安装与配置 步骤: 1、使用XFTP将Sqoop安装包sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz发送到master机器的主目录。 2、解压安装包: tar -zxvf ~/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz 3、修改文件夹的名字,将其改为s…...
只出现一次的数字(暴力、哈希查重、异或运算)
目录 一.题目 题目解析 题目链接 二.解题过程 俗手(暴力:数组模拟哈希表) 思路 代码示例 提交情况 本手:哈希查重 思路 代码示例 提交情况 妙手:异或运算 思路 代码示例 提交情况 作者的个人gitee 作者…...
Spark缓存
生活中缓存容量受成本和体积限制(比如 CPU 缓存只有几 MB 到几十 MB),但会通过算法(如 “最近最少使用” 原则)智能决定存什么,确保存的是 “最可能被用到的数据”。 1. 为什么需要缓存? 惰性执…...
linux中的常用命令(一)
目录 常用的快捷键 1- tab键:命令或者路径提示及补全; 2-ctrlc:放弃当前输入,终止当前任务或程序 3-ctrll;清屏 4-ctrlinsert:复制 5-鼠标右键:粘贴; 6-altc:断开连接/ctrlshift r 重新连接 7-alt1/2/3/等:切换回话窗口 8-上下键…...
Lua学习笔记
文章目录 前言1. Lua的数据类型2. Lua的控制结构2.1 循环2.1.1 for2.1.1.1 数值循环2.1.1.2 迭代循环2.1.2 while2.1.3 repeat-until 2.2 条件语句2.3 函数 3. Lua中的变量作用域 前言 Lua是一种轻量级的、高效的、可扩展的脚本语言,由巴西里约热内卢天主教大学&am…...
5月8日星期四今日早报简报微语报早读
5月8日星期四,农历四月十一,早报#微语早读。 1、外交部回应中美经贸高层会谈:这次会谈是应美方请求举行的; 2、河南许昌官方:胖东来联合京东物流打造的供应链产业基地将于今年投入运营; 3、我国外汇储备…...
P2415 集合求和 详解
此题我认为主要考数学逻辑,这个题目考的是你面对代码时,是否会从中去找规律推导一个数学公式。 先看题目: 此题目与集合有关,所以对于数学基础不好的同学,我会先给你讲一下这个集合的相关知识。 一,首先,…...
#define ccw (0)和#define ccw 0什么区别
目录 区别 一般建议 简单总结 #define ccw (0) 和 #define ccw 0 这两者在大多数情况下的功能非常相似,但在细节上有一些区别,主要涉及宏展开时的行为。 区别 #define ccw (0):宏定义的内容是(0),带括…...
跨平台移动开发框架React Native和Flutter性能对比
背景与架构 React Native 和 Flutter 都是跨平台移动开发框架,但它们的性能表现因架构差异而异。React Native 在 2025 年采用了 Bridgeless New Architecture(版本 0.74),使用 JavaScript Interface (JSI) 替代传统的 JavaScrip…...
【PhysUnits】2 SI 量纲 实现解析(prefix.rs)
源码 这是一个编译时量纲检查的物理单位库。 //! Physical Units Library with Type-Level Dimension Checking //! 带类型级量纲检查的物理单位库 //! //! This module provides type-safe physical unit representations using Rusts type system //! to enforce dimension…...
新能源汽车赛道变局:传统车企子品牌私有化背后的战略逻辑
2025年5月,一则资本市场动态引发行业震动:某国内头部传统车企宣布拟以每股2.57美元的价格私有化旗下高端新能源品牌,若交易完成,该新能源品牌将正式从纽交所退市。这一决策发生在全球新能源汽车行业经历剧烈洗牌、资本市场估值逻辑…...
[matlab]private和+等特殊目录在新版本matlab中不允许添加搜索路径解决方法
当我们目录包含有private,或者时候matlab搜索目录不让添加,比如截图: 在matlab2018以前这些都可以加进去后面版本都不行了。但是有时候我们必须要加进去才能兼容旧版本matlab库,比如mexopencv库就是这种情况。因此我们必须找到一个办法加进去…...
ImportError: cannot import name ‘Optional‘ from ‘pydantic‘
概览 再使用Optional定义fastapi可选参数时,出现了错误: ImportError: cannot import name Optional from pydantic python version: 3.8 pydantic version: 2.9.2 快速解决方案 Optional导入修改为typing包,如下 from typing import List…...
“水木精灵” 王泫梓妍时尚造型引关注
“水木精灵” 王泫梓妍一组时尚照片曝光,再次展现其独特时尚品味与青春活力。 照片中,王泫梓妍身着白色针织开衫搭配深蓝色牛仔短裙,开衫上精致的水钻装饰与深蓝色海军领增添了细节亮点,牛仔短裙的金色纽扣设计别致,整…...
数据结构-堆排序
1.定义 -堆中每个节点的值都必须大于等于(或小于等于)其左右子节点的值。如果每个节点的值都大于等于其子节点的值,这样的堆称为大根堆(大顶堆);如果每个节点的值都小于等于其子节点的值,称为…...
影响服务器性能的主要因素是什么
在这个数字化高速发展的时代,服务器就像是幕后的超级英雄,默默支撑着我们丰富多彩的网络世界。首先,硬件配置堪称服务器性能的基石。就好比一辆跑车,强大的引擎(CPU)、宽敞的跑道(内存ÿ…...
为什么 MySQL 用 B+ 树作为数据的索引,以及在 InnoDB 中数据库如何通过 B+ 树索引来存储数据以及查找数据
http://www.liuzk.com/410.html 索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。 索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 这个数据&am…...
若依框架Ruoyi-vue整合图表Echarts中国地图标注动态数据
若依框架Ruoyi-vue整合图表Echarts中国地图 概述创作灵感预期效果整合教程前期准备整合若依框架1、引入china.json2、方法3、data演示数据4、核心代码 完整代码[毫无保留]组件调用 总结 概述 首先,我需要回忆之前给出的回答,确保这次的内容不重复&#…...
可撤销并查集,原理分析,题目练习
零、写在前面 可撤销并查集代码相对简单,但是使用场景往往比较复杂,经常用于处理离线查询,比较经典的应用是结合线段树分治维护动态连通性问题。在一些较为综合的图论问题中也经常出现。 前置知识:并查集,扩展域并查…...
中介者模式(Mediator Pattern)详解
文章目录 1. 中介者模式概述1.1 定义1.2 基本思想2. 中介者模式的结构3. 中介者模式的UML类图4. 中介者模式的工作原理5. Java实现示例5.1 基本实现示例5.2 飞机空中交通控制示例5.3 GUI应用中的中介者模式6. 中介者模式的优缺点6.1 优点6.2 缺点7. 中介者模式的适用场景8. 中介…...
Java网络编程:深入剖析UDP数据报的奥秘与实践
在浩瀚的计算机网络世界中,数据传输协议扮演着至关重要的角色。其中,用户数据报协议(UDP,User Datagram Protocol)以其独特的“轻量级”和“无连接”特性,在众多应用场景中占据了一席之地。与更为人熟知的传输控制协议(TCP,Transmission Control Protocol)相比,UDP提…...
17.thinkphp的分页功能
一.分页功能 1.不管是数据库操作还是模型操作,都使用paginate()方法来实现(第一种方式); //查找user表所有数据,每页显示5条 returnView::fetch(index, [list > User::paginate(5)]); 页数: 2.创建一个静态模版页面…...
Pandas比MySQL快?
知乎上有人问,处理百万级数据,Python列表、Pandas、Mysql哪个更快? Pands是Python中非常流行的数据处理库,拥有大量用户,所以拿它和Mysql对比也是情理之中。 实测来看,MySQL > Pandas > Python列表…...
问题 | 低空经济未来发展前景机遇及挑战
低空经济 **一、发展前景与机遇**1. **政策红利加速释放,顶层设计逐步完善**2. **技术突破驱动商业化落地**3. **应用场景多元化拓展**4. **万亿级市场潜力** **二、主要挑战**1. **空域管理与安全监管难题**2. **技术瓶颈与产业链短板**3. **法规与标准体系待完善*…...
Matlab 分数阶PID控制
1、内容简介 Matlab218-分数阶PID控制 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...