蓝桥杯刷题周计划(第二周)
目录
- 前言
- 题目一
- 题目
- 代码
- 题解分析
- 题目二
- 题目
- 代码
- 题解分析
- 题目三
- 题目
- 代码
- 题解分析
- 题目四
- 题目
- 代码
- 题解分析
- 题目五
- 题目
- 代码
- 题解分析
- 题目六
- 题目
- 代码
- 题解分析
- 题目七
- 题目
- 代码
- 题解分析
- 题目八
- 题目
- 题解分析
- 题目九
- 题目
- 代码
- 题解分析
- 题目十
- 题目
- 代码
- 题解分析
- 题目十一
- 题目
- 代码
- 题解分析
- 题目十二
- 题目
- 代码
- 题解分析
- 题目十三
- 题目
- 代码
- 题解分析
- 题目十四
- 题目
- 代码
- 题解分析
- 题目十五
- 题目
- 代码
- 题解分析
- 题目十六
- 题目
- 代码
- 题解分析
- 题目十七
- 题目
- 代码
- 题解分析
- 题目十八
- 题目
- 代码
- 题解分析
- 题目十九
- 题目
- 代码
- 题解分析
- 题目二十
- 题目
- 代码
- 题解分析
前言
大家好!我是 EnigmaCoder。
- 本文是我蓝桥杯刷题计划的第二周。附:蓝桥杯刷题周计划(第一周)
- 本文含有20题,刷题内容涵盖DFS、数论相关、数据结构相关等等,每道题分为题目、代码、题解分析三部分,且附有原题链接。
- 希望能帮助到大家!
题目一
原题链接:lanqiao1508
题目
N皇后问题
题目描述*
在 N×N的方格棋盘放置了 N 个皇后,使得它们不相互攻击(即任意 2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成 45 角的斜线上。你的任务是,对于给定的 N,求出有多少种合法的放置方法。
输入描述
输入中有一个正整数 N≤10,表示棋盘和皇后的数量
输出描述
为一个正整数,表示对应输入行的皇后的不同放置数量。
输入输出样例
示例 1
输入
5
输出
10
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
代码
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=11;
int vis[N][N];
int n,ans=0;
void dfs(int dep){if(dep==n+1){ans++;return;}for(int i=1;i<=n;i++){if(vis[dep][i])continue;for(int _i=1;_i<=n;_i++)vis[_i][i]++;for(int _i=dep,_j=i;_i>=1&&_j>=1;_i--,_j--)vis[_i][_j]++;for(int _i=dep,_j=i;_i<=n&&_j>=1;_i++,_j--)vis[_i][_j]++;for(int _i=dep,_j=i;_i>=1&&_j<=n;--_i,++_j)vis[_i][_j]++;for(int _i=dep,_j=i;_i<=n&&_j<=n;++_i,++_j)vis[_i][_j]++;dfs(dep+1);for(int _i=1;_i<=n;_i++)vis[_i][i]--;for(int _i=dep,_j=i;_i>=1&&_j>=1;_i--,_j--)vis[_i][_j]--;for(int _i=dep,_j=i;_i<=n&&_j>=1;_i++,_j--)vis[_i][_j]--;for(int _i=dep,_j=i;_i>=1&&_j<=n;--_i,++_j)vis[_i][_j]--;for(int _i=dep,_j=i;_i<=n&&_j<=n;++_i,++_j)vis[_i][_j]--;}
}
int main()
{cin>>n;dfs(1);cout<<ans;return 0;
}
题解分析
本题为经典的DFS题,使用回溯法可以解决。
- 首先可以肯定的是,每一行必然有且仅有一个皇后(因为不可能出现两个皇后在同一行),于是就通过枚举每一层皇后的位置来搜索所有可能解即可。
- 每放置一个皇后就将对应的米字型区域设置为“禁区”,后面的皇后就不能放在“禁区”,回溯的时候将禁区取消掉。同时,为了正确维护“禁区”,不能使用
bool
数组来表示禁区,需要使用int
数组,表示这个位置被“多少个皇后占用了”,当占用数为0
时表示“禁区解除”。 - 层数到
n+1
时表示找到了一个解,不可行的解都到不了第n+1
行
题目二
原题链接:lanqiao1260
题目
题目描述
给定两个正整数A,B,求它们的最大公约数输入描述
第 1 行为一个整数 T,表示测试数据数量。接下来的 T 行每行包含两个正整数 A,B。
1≤T≤105 1≤A,B≤109 。输出描述
输出共 T 行,每行包含一个整数,表示答案。输入输出样例
示例 1
输入5
2 4
3 7
5 10
6 8
7 9
输出2
1
5
2
1运行限制
- 最大运行时间:2s
- 最大运行内存: 128M
代码
#include <bits/stdc++.h>
using namespace std;
int gcd(int a,int b){return b==0?a:gcd(b,a%b);
}
int main()
{int t;cin>>t;while(t--){int a,b;cin>>a>>b;cout<<gcd(a,b)<<endl;}return 0;
}
题解分析
本题考察最大公约数。
- 通过辗转相除法和三目运算符求最大公约数。
b==0?a:gcd(b,a%b);
- 我们知道两数相乘等于两数最大公约数和最小公倍数,所以可以通过最大公约数求最小公倍数。
return a/gcd(a,b)*b;
这里先除再乘是为了减少溢出的发生。
题目三
原题链接:lanqiao3205
题目
问题描述
给定一个正整数 n,请你计算 1∼n 中有多少对不同的素数,满足它们的差也是素数。输入格式
共一行,包含一个正整数 n(2≤n≤105 )。输出格式
共一行,包含一个正整数,表示答案。样例输入
5
样例输出
2
样例输入
20
样例输出
8
代码
#include <bits/stdc++.h>
using ll=long long;
const int N=1e5+10;
using namespace std;
vector<int>primes;
bool vis[N];void init(int n){vis[0]=vis[1]=true;for(ll i=2;i<=n;i++){if(!vis[i]){primes.push_back(i);for(int j=2*i;j<=n;j+=i)vis[j]=true;}}
}
int main()
{int n,ans=0;cin>>n;init(n);for(int i=0;i<primes.size();i++){for(int j=0;j<i;j++){if(!vis[primes[i]-primes[j]])ans++;}}cout<<ans<<endl;return 0;
}
题解分析
本题使用埃式筛法求素数。
-
埃式筛法,即埃拉托斯特尼筛法,是一种用于求一定范围内所有素数的高效算法。其原理是:从
2
开始,将每个素数的倍数都标记为合数并筛去,剩下的未被筛去的数就是素数。 -
例如求
100
以内的素数,先将2
标记为素数,筛去其倍数4、6、8
等;接着3
未被筛去,标记为素数,筛去6、9、12
等;依此进行。该算法简单直观,时间复杂度为O(n\log\log n)
,相比暴力枚举效率更高,能快速筛选出大量素数,在数论和密码学等领域应用广泛。 -
通过
bool
类型的数组来记录当前值是否为素数,false
表示为素数,true
表示不为素数。
题目四
原题链接:lanqiao3199
题目
问题描述
小明又新学了一个概念,叫做完美序列。一个仅包含数字序列被称为完美序列,当且仅当数字序列中每个数字出现的次数等于这个数字。比如 (1),(2,2,3,3,3))。空序列也算。现在小明得到了一个数字序列,他想知道最少要删除多少个数字才能使得这个数字序列成为一个完美序列。
输入格式
输入包括两行。
第一行一个整数 n,表示数字序列中数字的个数。
第二行,包括 n个整数,是数字序列中具体的每个数字。
输出格式
输出一个整数,表示最少要删除的数字个数。
样例输入
6 3 3 3 1 13 15
样例输出
2
评测数据规模
对于所有评测数据,1≤n≤105,ai≤109。
代码
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=1e5+10;
int main()
{int n,x;cin>>n;map<int ,int>mp;while(n--){cin>>x;mp[x]++;}int ans=0;for(auto pair:mp){int key=pair.first;int value=pair.second;if(value>=key)ans+=value-key;else ans+=value;}cout<<ans;return 0;
}
题解分析
本题使用map
容器解题。
-
代码通过读取整数数量
n
及n
个整数,用map
统计每个整数出现次数。之后遍历map
中的键值对,键为整数,值为该整数出现次数。根据值与键的大小关系计算累加结果:若值大于等于键,累加差值;若值小于键,累加值本身。最终输出累加结果。整体时间复杂度为O(nlogn)
。 -
pair.first
是pair
的键,pair.second
是pair
的值。 -
mp[x]++
表示mp
中x
对应的值加1。
题目五
原题链接:lanqiao1811
题目
题目描述
给定三个正整数 N,M,P,求 NMmodp。输入描述
第 1 行为一个整数 T,表示测试数据数量。接下来的 T行每行包含三个正整数
N,M,P。
1≤T≤105 1≤N,M,P≤109输出描述
输出共 T 行,每行包含一个整数,表示答案。
输入输出样例
示例 1
输入3
2 3 7
4 5 6
5 2 9
输出1
4
7
代码
#include <bits/stdc++.h>
using namespace std;
using ll=long long;ll qmi(ll a,ll b,ll p){ll res=1;while(b){if(b&1)res=res*a%p;a=a*a%p,b>>=1;}return res;
}int main()
{int t;cin>>t;while(t--){ll n,m,p;cin>>n>>m>>p;cout<<qmi(n,m,p)<<endl;}return 0;
}
题解分析
这道题主要是利用快速幂取模算法解决多组幂运算取模问题。
- 代码通过
qmi
函数实现快速幂取模,其核心思想是将指数进行二进制拆分,减少乘法运算次数。 - 在
qmi
函数中,不断将底数平方并对指数右移,若指数当前位为 1 则累乘底数到结果中并取模。主函数读取多组输入数据,每组包含底数、指数和模数,调用qmi
函数计算结果并输出。 - 时间复杂度为 O(logm),空间复杂度为 O(1),能高效处理大规模幂运算取模。
题目六
原题链接:lanqiao504
题目
题目描述
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
输入描述
输入一行包含一个单词,单词只由小写英文字母组成。对于所有的评测用例,输入的单词长度不超过 1000。
输出描述
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
输入输出样例
示例 1
输入lanqiao
输出a
2
示例 2
输入longlonglongistoolong
输出
o
6运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
代码
#include <bits/stdc++.h>
using namespace std;
int main()
{string s;cin>>s;map<char,int>mp;for(int i=0;i<s.size();i++){mp[s[i]]++;}int ans=-1;char c;for(auto pair:mp){char key=pair.first;int value=pair.second;if(value>ans){c=key;ans=value;}}cout<<c<<endl;cout<<ans<<endl;return 0;
}
题解分析
本题需要记录字符串中出现最多的字母和这个字母出现的次数,我们可以使用map
容器解题,其中键是字母,值是字母出现的次数。
- 由题意,如果有多个字母出现的次数相等,输出字典序最小的那个。所以,题解中必须是
value
大于ans
,否则输出的不是字典序最小的那个。 map
容器只能通过键找到值,而无法通过值找到键。所以,可以定义一个与相同类型的变量跟随ans
进行变化,从而找到值对应的键。
题目七
原题链接:lanqiao3186
题目
问题描述
wzy 给你了一个 n×n 的 01 矩阵 a,你需要求一下满足 a i,j =a i,k =a j,k =1的三元组 (i,j,k) 的个数。注:给定的矩阵一定满足ai,j=a j,i 。同时,(1,2,3),(3,2,1) 这种视作同一个三元组,且 i≠j,j≠k,i≠ki=j,j=k,i\=k。
输入格式
第一行输入一个数字 n,表示矩阵大小。(1≤n≤800)接来下 n 行,每行一个长度为 n 的 01 串。
输出格式
输出满足条件的三元组数量。样例输入
4
0011
0011
1101
1110样例输出
2
代码
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
int a[2010][2010];
int main()
{string s;int n;cin>>n;for(int i=1;i<=n;i++){cin>>s;for(int j=1;j<=n;j++){a[i][j]=s[j-1]-'0';}}
long long ans=0;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){for(int k=j+1;k<=n;k++){if(a[i][j]==1&&a[i][k]==1&&a[j][k]==1)ans++;}}}cout<<ans;return 0;
}
题解分析
本题使用暴力枚举的方式解题。
- 首先读取矩阵的大小
n
和矩阵本身,将每个字符转换为0或1并存储在二维数组a中。 - 然后通过三层嵌套循环遍历所有可能的
i、j、k
组合(满足i < j < k),对于每个组合,检查a[i][j]、a[i][k]和a[j
][k]是否都为1,如果是,则将答案ans
加1
。 - 最后输出
ans
的值。
题目八
原题链接:lanqiao11097
题目
问题描述
小蓝是一个热爱阅读的年轻人,他有一个小型图书馆。为了能够管理他的书籍库存,他需要一个程序来记录图书的信息并执行两种操作:添加图书 add 和查找作者 find。初始小蓝没有书,给出 n 个操作。add 操作给出两个字符串 bookname,author,表示添加的图书图书名和作者;find 操作给出一个字符串 author,你需要输出小蓝的图书馆里这个author 有多少本图书。
输入格式
第一行一个整数 n,表示有 n 个操作。之后 n 行,给出操作及后面的参数,如题所述。给出的字符串长度 len 不超过10。
输出格式
对每一个find 操作,你需要输出这个作者在小蓝的图书馆有多少本书,注意是书的数量,不是不同书的数量,同时不同作者可能出现同名的书。样例输入
7
find author1
add book1 author1
find author1
add book1 author1
find author1
add book1 author2
find author2样例输出
0
1
2
1评测数据规模
1≤n≤1000,1≤len≤10。
#include <bits/stdc++.h>
using namespace std;
int a[1010];
int main()
{int n;cin>>n;string s,t,e;map<string,int>mp;int i=0;while(n--){cin>>s;if(s=="find"){cin>>t;cout<<mp[t]<<endl;}if(s=="add"){cin>>e>>t;mp[t]++;}}return 0;
}
题解分析
本题使用map
容器解题。
- 分为
find
和add
两种情况讨论。 auther
为键,对应书的数量为值。每一次find
输出当前作者的书的数量即可。
题目九
原题链接:lanqiao4567
题目
问题描述
小蓝有一个长度为 n 的数组 a ,现在对于每一个 ai ,小蓝可以选择下面三种操作之一:
- ai=ai-1
- ai=ai
- ai=ai+1
小蓝想知道当她把每一个 ai都操作之后,数组众数的数目最大是多少。但是小蓝并不擅长这个问题,请你帮小蓝计算所有操作完成之后数组众数的最大数目。
输入格式
第一行输入一个整数,代表n 。第二行输入 n 个整数,代表 a1,a2,a3…,an 。
输出格式
输出一行一个整数,代表众数的最大数目。样例输入
3
1 2 3样例输出
3说明
对于样例,将 a1加一,a3 减一,a2 不变,此时三个数都是2 ,而其他操作得到的结果众数数目都小于3 ,所以最终答案是 3 。
代码
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=1e5+10;
ll a[N];
int main()
{int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];map<ll,ll>mp;for(int i=1;i<=n;i++){mp[a[i]]++;mp[a[i]-1]++;mp[a[i]+1]++;}ll ans=0;for(int i=1;i<=n;i++){ans=max(ans,mp[a[i]]);}cout<<ans;return 0;
}
题解分析
本题仍然使用map
容器解题。
- 题中有三种操作,可以对应到
map
容器中的三个键,通过枚举数组中的每一个数,对其三种情况进行计数。 - 使用
max
库函数最大众数。
题目十
原题链接:lanqiao3272
题目
问题描述
小蓝是一位有名的漆匠,他的朋友小桥有一个漆房,里面有一条长长的走廊,走廊两旁有许多相邻的房子,每间房子最初被涂上了一种颜色。小桥来找小蓝,想让他把整个走廊都涂成同一个颜色。小蓝告诉小桥,他每天只能涂一段长度为 k 的区间。对于每个区间,他可以选择将其中的房子重新涂上任何一种颜色,或者保持原来的颜色不变。
小桥想知道小蓝至少要涂几天,才能让整个走廊变得美丽。
请帮助小桥解决这个问题。
输入格式
第一行包含一个整数 t(1≤100),表示测试用例的数量。每个测试用例的第一行包含两个整数 n 和 k(1≤k≤n≤104 ),第二行包含 n 个整数 a1,a2,⋯,ana 1 ,a 2 ,⋯,a n (1≤ai≤60),分别表示每个房子最初的颜色。
保证所有测试用例中 n 的总和不超过 10 4 。
输出格式
对于每个测试用例,输出一个整数,表示小蓝需要涂漆的最少天数。样例输入
2
5 2
1 1 2 2 1
6 2
1 2 2 3 3 3样例输出
1
2
代码
#include <bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int a[N],b[N];
int main()
{int t;cin>>t;int cut;while(t--){int n,k;cin>>n>>k;for(int i=1;i<=n;i++)cin>>a[i];int ans=(1<<31)-1;for(int i=1;i<=60;i++){int cut=0;for(int j=1;j<=n;j++){b[j]=a[j];}for(int j=1;j<=n;j++){if(b[j]!=i){for(int h=j;h<=j+k-1;h++){b[h]=i;}cut++;j=j+k-1;}}ans=min(ans,cut);}cout<<ans<<endl;}return 0;
}
题解分析
本题核心思路是枚举所有可能的目标值(从1到60),并对每个目标值模拟操作过程,计算所需的操作次数,最终取最小值。
- 枚举目标值:遍历所有可能的目标值
i
(1到60),假设最终数组的所有元素都变为i
。 - 模拟操作:对于每个目标值
i
,复制原数组到临时数组b
,然后遍历b
数组。当遇到不等于i的元素时,执行一次操作,将从该位置开始的连续k
个元素变为i
,并增加操作次数。同时,跳过接下来的k-1
个元素,避免重复操作。 - 更新最小值:记录每个目标值
i
所需的操作次数,并更新全局最小值。
题目十一
原题链接:lanqiao1536
题目
上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和(路径上的每一步只可沿左斜线向下或右斜线向下走)。
输入描述
输入的第一行包含一个整数 N (1≤N≤100),表示三角形的行数。下面的 N 行给出数字三角形。数字三角形上的数都是 0 至99 之间的整数。
输出描述
输出一个整数,表示答案。输入输出样例
示例
输入5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
输出30
代码
#include <bits/stdc++.h>
using namespace std;
const int N=110;
int a[N][N],dp[N][N];
int main()
{int n;cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){cin>>a[i][j];}}for(int i=n;i>=1;i--){for(int j=1;j<=i;j++){dp[i][j]=a[i][j]+max(dp[i+1][j],dp[i+1][j+1]);}}cout<<dp[1][1];return 0;
}
题解分析
本题使用线性DP解题。
- 设状态
dp[i][j]
表示从第i行第j列的元素往下走的所有路径当中最大的和。 - 状态转移方程为
dp[i][j] = max(dp[i + 1][i], dp[i +1][j + 1]);
- 因为这里需要用下面的状态更新上面的,所以我们应该从下往上进行状态转移。最后输出
dp[1][1]
。
题目十二
原题链接:lanqiao3367
题目
问题描述
小蓝来到了一座高耸的楼梯前,楼梯共有 N 级台阶,从第 0 级台阶出发。小蓝每次可以迈上 1 级或 2 级台阶。但是,楼梯上的第 a 1级第a 2级、第a3级,以此类推,共 M 级台阶的台阶面已经坏了,不能踩上去。现在,小蓝想要到达楼梯的顶端,也就是第 N 级台阶,但他不能踩到坏了的台阶上。请问他有多少种不踩坏了的台阶到达顶端的方案数由于方案数很大,请输出其对 109+7 取模的结果。输入格式
第一行包含两个正整数 N(1≤N≤10 5 )和 M(0≤M≤N),表示楼梯的总级数和坏了的台阶数。
样例输入
6 1
3
样例输出
4
代码
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=1e5+9;
const ll p=1e9+7;
ll dp[N];
bool broken[N];int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n,m;cin>>n>>m;for(int i=1;i<=m;i++){int x;cin>>x;broken[x]=true;}dp[0]=1;if(!broken[1])dp[1]=1;for(int i=2;i<=n;i++){if(broken[i])continue;dp[i]=(dp[i-1]+dp[i-2])%p;}cout<<dp[n]<<endl;return 0;
}
题解分析
本题使用线性DP解题。
- 设状态
dp[i]
表示走到第级合阶的方案数。 - 状态转移方程为
dp[i]] = dp[i- 1] + dp[i-2]
,如果为破损的,则dp[i] =0
。 - 可以用一个桶来记录哪些位置是破损的。从前往后更新,最后输出
dp[n]
。 - 注意:站在原地也算一种方案,所以
dp[0]=1;
题目十三
原题链接:lanqiao3423
题目
问题描述
小蓝是工厂里的安全工程师,他负责安放工厂里的危险品。工厂是一条直线,直线上有 n 个空位,小蓝需要将若干个油桶放置在 n 个空位上,每 2 个油桶中间至少需要 k 个空位隔开,现在小蓝想知道有多少种放置油桶的方案,你可以编写一个程序帮助他吗?
由于这个结果很大,你的输出结果需要对 109+7 取模。
输入格式
第一行包含两个正整数 n,k,分别表示 n 个空位与 k 个隔开的空位。输出格式
输出共 1 行,包含 1 个整数,表示放置的方案数对 109+7 取模。样例输入
4 2样例输出
6说明
用 0 代表不放,1 代表放,6 种情况分别为:0000,1000,0100,0010,0001,1001。
代码
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
const ll N=1e6+9,p=1e9+7;ll dp[N],prefix[N];int main()
{int n,k;cin>>n>>k;dp[0]=prefix[0]=1;for(int i=1;i<=n;i++){if(i-k-1<1)dp[i]=1;else dp[i]=prefix[i-k-1];prefix[i]=(prefix[i-1]+dp[i])%p;}cout<<prefix[n]<<endl;return 0;
}
题解分析
本题使用线性DP解题。
-
设状态
dp[i]
表示以位置结尾的方案总数。状态转移方程为dp[i]=dp[j]从j=1到i-k-1的和
。 -
注意:直接去求和肯定会超时,所以我们需要利用前缀和来优化时间复杂度。
-
同时,记得取模。
题目十四
原题链接:lanqiao2490
题目
问题描述
小蓝有一个长度为 n 的括号串,括号串仅由字符 ( 、 ) 构成,请你帮他判断一下该括号串是否合法,合法请输出 Yes ,反之输出 No。合法括号序列:
空串是合法括号序列。
若 s 是合法括号序列,则 ( s ) 也是合法括号序列。
若 s,t 都是合法括号序列,则 st 也是合法括号序列。
例如 ()() , (()) , (())() 均为合法括号序列。
输入格式
第一行包含一个正整数 n ,表示括号串的长度。第二行包含一个长度为 n 的括号串。
输出格式
输出共 1 行,若括号串合法请输出 Yes ,反之输出 No 。样例输入1
10
(()(()))()
样例输出1
Yes
代码
#include <bits/stdc++.h>
using namespace std;
const int N=105;
char stk[N],s[N];
int top;
int main()
{int n;cin>>n;cin>>s+1;for(int i=1;i<=n;i++){if(s[i]==')'){if(top&&stk[top]=='('){top--;continue;}}stk[++top]=s[i];}if(top)cout<<"No"<<endl;else cout<<"Yes";return 0;
}
题解分析
本题使用栈解题。
- 每次将
(
入栈,当遇到)
时检测栈顶是否可以匹配与其掉,如果不行也入栈,最后检查栈是否为空。
题目十五
原题链接:lanqiao511
题目
题目描述
小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。
假设内存中有 M 个单元,每单元能存放一个单词和译义。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过 M−1,软件会将新单词存入一个未使用的内存单元;若内存中已存入 M 个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。
假设一篇英语文章的长度为 N 个单词。给定这篇待译文章,翻译软件需要去外存查找多少次词典?假设在翻译开始前,内存中没有任何单词。
输入描述
输入共 2 行。每行中两个数之间用一个空格隔开。第一行为两个正整数 M 和 N,代表内存容量和文章的长度。
第二行为 N 个非负整数,按照文章的顺序,每个数(大小不超过 1000)代表一个英文单词。文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。
其中,0<M≤100,0<N≤1000。
输出描述
输出共 1 行,包含一个整数,为软件需要查词典的次数。输入输出样例
示例 1
输入3 7
1 2 1 5 4 4 1
输出5
代码
#include <bits/stdc++.h>
using namespace std;
const int N=2e3+9;
int q[N],hh=1,tt=0;
int main()
{int m,n;cin>>m>>n;int ans=0;for(int i=1;i<=n;i++){int x;cin>>x;bool tag=false;for(int j=hh;j<=tt;j++)if(q[j]==x)tag=true;if(tag)continue;if(tt-hh+1==m)hh++;q[++tt]=x;ans++;}cout<<ans<<endl;return 0;
}
题解分析
本题使用队列解题。
- 用一个队列表示“内存”,每次遇到一个新单词
x
,就循环扫描这个队列,如果里面已经保存过x
了就直接跳过,否则判断内存是否需要释放并将x
入队。 hh++
表示出队,q[++tt]=x;
表示入队。
题目十六
原题链接:lanqiao3714
题目
问题描述
如果一个数
x 是素数,且 ⌊x/2⌋ 也是素数,则称 x 是好数,例如 5,7,11 都是好数。现在给定你一个正整数 n,有 q 组查询,每组查询给出一个区间 [l,r],1≤l≤r≤n,询问该区间内有多少个好数。素数:如果一个数的约数只有 1 和本身,则为素数。
输入格式
第一行二个整数 n,q,表示区间上界和查询数。接下来 q 行,每行一对[l,r] 表示查询的区间。输出格式
对于每次查询,输出区间好数的数量。样例输入
20 3
1 9
7 20
11 17
样例输出
2
2
1
代码
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=1e6+9;
bool vis[N];
ll prefix[N];
void euler(ll n){vector<ll>primes;vis[0]=vis[1]=true;for(ll i=2;i<=n;i++){if(!vis[i])primes.push_back(i);for(ll j=0;j<primes.size()&&i*primes[j]<=n;j++){vis[i*primes[j]]=true;if(i%primes[j]==0)break;}}
}
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll n,q;cin>>n>>q;euler(n);for(int i=1;i<=n;i++){prefix[i]=prefix[i-1]+(int)(!vis[i]&&!vis[i/2]);}while(q--){int l,r;cin>>l>>r;cout<<prefix[r]-prefix[l-1]<<endl;}return 0;
}
题解分析
本题使用欧拉筛法解题。
- 先用欧拉筛法筛除
[1,n]
的所有质数,再通过对于每个数字0(1)
判断是否是“好数”,再对判断结果进行前缀和,每次0(1)
回答询问。总时间复杂度为0(n+g)
。 - 使用前缀和可以防止超时。
题目十七
原题链接:lanqiao1140
题目
最小质因子之和(Hard Version)
题目描述
定义 F(i) 表示整数 i 的最小质因子。现给定一个正整数 N,请你求出 ∑2nF(i) 。输入描述
第 1 行为一个整数 T,表示测试数据数量。接下来的 T 行每行包含一个正整数 N1≤T≤10 6 ,2≤N≤2×10 7 。
输出描述
输出共 T 行,每行包含一个整数,表示答案。输入输出样例
示例 1
输入3
5
10
15
输出12
28
59
代码
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=2e7+9;
bool vis[N];
ll prefix[N];
ll minp[N];
void euler(ll n){vector<ll>primes;vis[0]=vis[1]=true;for(ll i=2;i<=n;i++){if(!vis[i])primes.push_back(i),minp[i]=i;for(ll j=0;j<primes.size()&&i*primes[j]<=n;j++){vis[i*primes[j]]=true;minp[i*primes[j]]=primes[j];if(i%primes[j]==0)break;}}
}
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll q;cin>>q;euler(2e7+9);for(int i=1;i<=2e7+9;i++){prefix[i]=prefix[i-1]+minp[i];}while(q--){ll k;cin>>k;cout<<prefix[k]<<endl;}return 0;
}
题解分析
本题仍然使用欧拉筛法解题。
- 与上题大致一样,改变一些条件即可。
题目十八
原题链接:lanqiao1142
题目
题目描述
这天小明买彩票中了百亿奖金,兴奋的他决定买下蓝桥公司旁的一排连续的楼房。已知这排楼房一共有 N 栋,编号分别为 1∼N,第 i 栋的高度为 h i。
好奇的小明想知道对于每栋楼,左边第一个比它高的楼房是哪个,右边第一个比它高的楼房是哪个(若不存在则输出 −1)。但由于楼房数量太多,小明无法用肉眼直接得到答案,于是他花了 1 个亿来请你帮他解决问题,你不会拒绝的对吧?
输入描述
第 1 行输入一个整数 N,表示楼房的数量。第 2 行输入 N 个整数(相邻整数用空格隔开),分别为 h1h2,…,hN,表示楼房的高度。1≤N≤7×10 1≤hi≤109 。
输出描述
输出共两行。第一行输出 N 个整数,表示每栋楼左边第一栋比自己高的楼的编号。
第二行输出 N 个整数,表示每栋楼右边第一栋比自己高的楼的编号。
输入输出样例
示例 1
输入5
3 1 2 5 4输出
-1 1 1 -1 4
4 3 4 -1 -1运行限制
- 最大运行时间:2s
- 最大运行内存: 256M
代码
#include <bits/stdc++.h>
using namespace std;const int N=7e5+9;
int a[N],dpl[N],dpr[N];
int stk[N],top;int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++){while(top&&a[stk[top]]<=a[i])top--;dpl[i]=top?stk[top]:-1;stk[++top]=i;}top=0;for(int i=n;i>=1;i--){while(top&&a[stk[top]]<=a[i])top--;dpr[i]=top?stk[top]:-1;stk[++top]=i;}for(int i=1;i<=n;i++)cout<<dpl[i]<<' ';cout<<endl;for(int i=1;i<=n;i++)cout<<dpr[i]<<' ';return 0;
}
题解分析
本题依照题意使用单调栈解题即可。
题目十九
原题链接:lanqiao3707
题目
问题描述
小蓝去蛋糕店买蛋糕了,蛋糕店有 n 个蛋糕摆在一排,每个蛋糕都有一个高度 h[i]。小蓝想买 k 个蛋糕,但是小蓝有强迫症,他只买符合以下要求的蛋糕:买的 k 个蛋糕必须连续摆放在一起。k 个蛋糕中的最大值与最小值之差要小于等于 x。
现在小蓝想知道,他任选 k 个连续摆放的蛋糕,恰好符合他要求的概率是多少。由于精度问题,你的输出需要对 998244353 取模。
输入格式
第一行输入三个整数 n,k,x,为题目所表述的含义。第二行输入
n 个整数,表示每个蛋糕的高度。输出格式
输出一个整数,表示小蓝愿意买的概率对 998244353 取模的结果。令M=998244353 ,可以证明所求概率可以写成既约分数 p/q的形式,其中 p,q 均为整数且 q≢0(modM)q\≡0(mod M)。输出的整数当是 p×q−1(modM)p×q −1 (mod M) 。
样例输入
4 3 2
1 4 6 6样例输出
499122177说明
根据题意一共有两组连续 k 个蛋糕,分别是 1 4 6,4 6 6。
4 6 6 是小蓝想买的蛋糕,因此概率为1/ 2,对 998244353 取模的结果为 499122177。评测数据规模
3≤n≤105,2≤k≤n,1≤h[i]≤109,1≤x≤109 。
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+9,p=998244353;
ll a[N],q[N],mi[N],ma[N];
ll qmi(ll a,ll b)
{ll res=1;while(b){if(b&1)res=res*a%p;a=a*a%p,b>>=1;}return res;
}
ll inv(ll x)
{return qmi(x,p-2);}
int main()
{ll n,k,x;cin>>n>>k>>x;for(ll i=1;i<=n;i++)cin>>a[i];ll hh=1,tt=0;for(ll i=1;i<=n;i++){while(hh<=tt&&q[hh]<i-k+1)hh++;while(hh<=tt&&a[q[tt]]>a[i])tt--;q[++tt]=i;mi[i]=a[q[hh]];}hh=1,tt=0;for(ll i=1;i<=n;i++){while(hh<=tt&&q[hh]<i-k+1)hh++;while(hh<=tt&&a[q[tt]]<a[i])tt--;q[++tt]=i;ma[i]=a[q[hh]];}int ans=0;for(int i=k;i<=n;i++)if(ma[i]-mi[i]<=x)ans++;cout<<ans*inv(n-k+1)%p<<endl;return 0;
}
题解分析
本题使用单调队列并结合逆元解题。
-
用单调队列分别处理出固定长度区问的最大值和最小值,然后用遍历区间
[k, n]
,计算有多少个区间的最值之差<=X,总区间个数为n -k+ 1
, 再结合逆元计算即可。
题目二十
原题链接:lanqiao2047
题目
题目描述:
小 Z 同学每天都喜欢斤斤计较,今天他又跟字符串杠起来了。他看到了两个字符串 S1 S2 ,他想知道 S1 在 S2 中出现了多少次。
现在给出两个串 S1,S2(只有大写字母),求 S1 在 S2 中出现了多少次。
输入描述
共输入两行,第一行为 S1,第二行为 S2。1<len(s1)<len(s2)<106
,字符只为大写字母或小写字母。
输出描述
输出一个整数,表示 S1 在 S2 中出现了多少次。输入输出样例
示例1
输入LQYK
LQYK输出
1
代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
char s[N],p[N];int nex[N];int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>p+1;int m=strlen(p+1);cin>>s+1;int n=strlen(s+1);nex[0]=nex[1]=0;for(int i=2,j=0;i<=m;i++){while(j&&p[i]!=p[j+1]) j=nex[j];if(p[i]==p[j+1]) j++;nex[i]=j;}int ans=0;for(int i=1,j=0;i<=n;i++){while(j&&s[i]!=p[j+1]) j=nex[j];if(s[i]==p[j+1]) j++;if(j==m) ans++;}
cout<<ans<<endl;
return 0;
}
题解分析
本题使用KMP模板解题即可。
相关文章:
蓝桥杯刷题周计划(第二周)
目录 前言题目一题目代码题解分析 题目二题目代码题解分析 题目三题目代码题解分析 题目四题目代码题解分析 题目五题目代码题解分析 题目六题目代码题解分析 题目七题目代码题解分析 题目八题目题解分析 题目九题目代码题解分析 题目十题目代码题解分析 题目十一题目代码题解分…...
03 | fastgo 项目规范及目录结构介绍
提示: 所有体系课见专栏:Go 项目开发极速入门实战课;欢迎加入我的训练营:云原生AI实战营,一个助力 Go 开发者在 AI 时代建立技术竞争力的实战营。 为了让你更好的学习本课程。本节课,我来简单介绍下 fastgo…...
K8S学习之基础二十三:k8s的持久化存储之nfs
K8S持久化存储之nfs 在 Kubernetes (k8s) 中使用 NFS(Network File System)作为存储解决方案是一种常见的方式,特别是在需要共享存储的场景中。以下是关于如何在 Kubernetes 中使用 NFS 存储的详细说明: 1. 准备 NFS 服务器 …...
CTF代码学习日记 Python
os模块 在Python中,os是一个内置的标准模块,主要用于与操作系统进行交互,提供了许多操作文件、目录、进程等的功能。 例如: os.mkdir()用于创建新目录os.rmdir()用于删除空目录os.listdir()可以列出指定目录下的所有文件和目录…...
存储优化(protobuf与mmkv)
存储优化(protobuf与mmkv) 在Android应用开发中,数据存储是一个基础且关键的环节。随着应用功能的日益复杂,数据量的增加,传统的存储方式如SharedPreferences、SQLite等在性能上的局限性逐渐显现。本文将深入探讨两种…...
MTK Android12 添加GMS后,报“设备未经过play保护认证“问题
文章目录 问题解决 问题 在MTK平台的Android12机柜上面,客户要求安装GMS。安装后,打开发现报"设备未经过play保护认证"问题,无法使用。解决 路径:/build/make/tools/buildinfo.sh diff --git a/build/make/tools/bui…...
自定义Linux网络协议的开发与测试
在当今快速发展的技术领域中,定制化网络协议可以为特定的应用场景提供灵活而强大的解决方案。本文将详细介绍如何在Linux系统上开发一个自定义网络协议,并编写相应的用户空间程序进行测试。所有步骤基于2025年3月11日的时间点完成。 开发自定义协议内核模块 定义协议和实现…...
Ubuntu 24.04 安装与配置 JetBrains Toolbox 指南
📌 1. JetBrains Toolbox 介绍 JetBrains Toolbox 是 JetBrains 开发的工具管理器,可用于安装、更新和管理 IntelliJ IDEA、PyCharm、WebStorm、CLion 等。本指南记录了 JetBrains Toolbox 在 Ubuntu 24.04 上的 安装、路径调整、权限管理 及 遇到的问题…...
说一下spring的事务隔离级别?
大家好,我是锋哥。今天分享关于【说一下spring的事务隔离级别?】面试题。希望对大家有帮助; 说一下spring的事务隔离级别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring的事务隔离级别是指在数据库事务管理中…...
【社区投稿】深入再谈智能指针、AsRef引用与Borrow借用
深入再谈智能指针、AsRef引用与Borrow借用 这是一个具有深度的技术主题。每次重温其理论知识,都会有新的领悟。大约 2 年前,我曾就这一技术方向撰写过另一篇短文《从类型转换视角,浅谈Deref<Target T>, AsRef<T>, Borrow<T&g…...
C++ Primer Plus第十二章课后习题总结
1. 对于下面的类声明: class Cow {char name[20];char * hobby;double weight;public:Cow();Cow(const char * nm, const char * ho, double wt);Cow(const Cow c&);~Cow();Cow & operator(const Cow & c);void ShowCow() const; // display all cow d…...
Xavier 初始化:深度网络权重初始化的经典之作
Xavier 初始化:深度网络权重初始化的经典之作 发音:美 [zeɪvjər] n.泽维尔(男子名) 在深度学习的发展历程中,权重初始化对神经网络训练的成功至关重要。随机初始化的简单方法在浅层网络中尚可,但在深层…...
【量化策略】动量反转策略
【量化策略】动量反转策略 🚀量化软件开通 🚀量化实战教程 技术背景与应用场景 动量反转策略是一种基于市场行为分析的量化交易策略,它假设股票价格在经历一段时间的持续上涨或下跌后,会出现反转。这种策略适用于那些希望通过…...
菜鸟之路Day23一一JavaScript 入门
菜鸟之路Day23一一JavaScript 入门 作者:blue 时间:2025.3.10 文章目录 菜鸟之路Day23一一JavaScript 入门0.概述1.JS的引入方式2.JS的基础语法2.1输出语句2.2变量2.3数据类型2.4运算符2.5类型转换 3.函数4.JS对象4.1Array对象4.2String对象4.3Js自定义…...
FreeSWITCH 简单图形化界面40 - 使用mod_curl模块进行http请求
FreeSWITCH 简单图形化界面40 - 使用mod_curl模块进行http请求 0、界面预览00、简介1、编译安装1.1 编辑模块配置文件 2、使用2.1 拨号规则GET 请求POST 请求JSON 数据 2.2 Lua 脚本GET 请求POST 请求JSON 数据 3 、示例3.1 示例 1:提交 CDR 到第三方接口3.2 示例 2…...
TCP/IP原理详细解析
前言 TCP/IP是一种面向连接,可靠的传输,传输数据大小无限制的。通常情况下,系统与系统之间的http连接需要三次握手和四次挥手,这个执行过程会产生等待时间。这方面在日常开发时需要注意一下。 TCP/IP 是互联网的核心协议族&…...
HTTP与HTTPS的深度解析:技术差异、安全机制及应用场景
引言 HTTP(超文本传输协议)作为互联网通信的核心协议,自1991年诞生以来,经历了从HTTP/1.0到HTTP/3的多次迭代。然而,随着网络安全威胁的升级,纯HTTP协议因缺乏加密机制逐渐暴露其局限性。本文将重点解析HT…...
DrissionPage:更高效的动态爬虫实践(实例)
场景分析 代码重构对比 原Requests方案痛点 DrissionPage方案优势 重构后完整代码 关键技术点解析 1. 会话保持与指纹模拟 2. 智能请求重试 3. 反反爬策略 4. 混合模式扩展 性能对比测试 适用场景建议 常见问题解决 场景分析 原代码通过Requests直接调用B站API接…...
Triplet Loss原理及 Python实现
Triplet loss最初是谷歌在 FaceNet: A Unified Embedding for Face Recognition and Clustering 论文中提出的,可以学到较好的人脸的embedding Triplet Loss 是一种用于训练特征嵌入(feature embedding)的损失函数,广泛应用于人脸…...
2025人工智能AI新突破:PINN内嵌物理神经网络火了
最近在淘金的时候发现基于物理信息的神经网络(简称PINN)也是个研究热点,遂研读了几篇经典论文,深觉这也是个好发论文的方向,所以火速整理了一些个人认为很值得一读的PINN论文和同学们分享。 为了方面同学们更好地理解…...
深入探索Matter协议:开发Matter智能家居设备的基本步骤
随着家居智能化程度的提高,智能家居设备之间相互连接的网络虽然提升了家庭便利性,但也变得越来越复杂,难以管理。将亚马逊Alexa、Ring门铃、谷歌Nest Hub和苹果HomeKit等各种设备连接起来,并确保这些不同设备和操作系统能够良好地…...
搜广推校招面经四十五
快手主站推荐算法 这个是做因果选券的,如果大家的工作和这个有关,可以看看 一、有没有分析特征对各个的贡献度,怎么做? 传统的特征重要度衡量方法,就不介绍了。什么基于树模型的、SHAP值、LIME等。 但其实实际工程中…...
python之replace,strip,split命令
1. replace() 方法 功能:替换字符串中的指定子串 语法:str.replace(old, new[, count]) 特点: 全部替换(默认)或指定替换次数区分大小写返回新字符串,原字符串不变 示例: text "Hello…...
C语言处理字符串的十个函数(附带大量实例)
C语言的字符串处理函数主要集中在 <string.h> 头文件中,使用这些函数前必须包含该头文件。 字符串处理函数操作的对象通常是字符串(以 \0 结尾的字符数组),它们极大地方便了文本处理任务。 以下是我们将要讲解的主要函数&…...
【10】单片机编程核心技巧:指令周期与晶振频率
【10】单片机编程核心技巧:指令周期与晶振频率 🌟 核心概念 单片机的运算速度与时间控制,本质上由 指令周期 和 晶振频率 共同决定。理解这两者的关系,是掌握单片机底层控制的关键。 📌 1. 节拍与指令周期 …...
GitLab的Dockerfile 追踪
为了在 GitLab 上准备每个平台的 Docker 镜像文件,并实现完整的 Dockerfile 追踪,可以按照以下步骤进行操作: 项目准备 首先,确保你有一个 GitLab 项目,并且本地已经克隆了该项目的仓库。如果还没有项目,可…...
HTML基础
前言 什么是 HTML? HTML 是一种用于创建网页结构的标记语言,通过标签(Tag)定义内容的结构和呈现方式。 浏览器解析 HTML 文档后,将其渲染为可视化网页。 一、HTML 语法 1. HTML 基本骨架 所有 HTML 文档必须包含以下…...
静态时序分析:无法满足的生成时钟(TIM-255警告、UITE-461或PTE-075错误)
相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在阅读本文前,强烈建议首先阅读介绍生成时钟的文章,尤其是其中关于时钟极性和反相的相关内容。 静态时序分析:SDC约束命令cr…...
SpringBoot日常:集成shareingsphere-jdbc
文章目录 pom依赖application.yml配置log4j2.xml实体类MapperServicecontroller调用插入接口调用查询接口 本章内容我们来聊聊如何将shareingsphere-jdbc集成到我们自己的springboot项目中,本章采用的shareingsphere-jdbc版本是5.1.2,springboot项目是2.…...
Java 生成图形验证码
一、图形验证码的意义 图形验证码是一种广泛应用于互联网领域的安全验证机制,它通过向用户展示包含字符、数字、图形等信息的图片,要求用户正确识别并输入其中的内容,以此来区分用户是人类还是机器程序。图形验证码具有多方面重要意义&#…...
nextjs15简要介绍以及配置eslint和prettier
目录 一、Next.js 何时使用服务器端渲染(SSR)?何时使用静态生成(SSG)? 1、服务器端渲染(SSR - getServerSideProps) 2、 静态生成(SSG - getStaticProps) …...
插入排序算法优化
一 插入排序概述 插入排序是稳定的原地排序算法,核心思想是逐步构建有序序列。对于未排序部分的每个元素,在已排序序列中从后向前扫描,找到合适位置插入。时间复杂度为: 最优:O(n)(已有序) 最差:O(n^2)(完全逆序) 平均:O(n^2) 二 二分查找优化(减少比较次数)…...
python学智能算法(七)|KNN邻近算法
【1】引言 前述学习进程中,已经了解了一些非常经典的智能算法,相关文章包括且不限于: python学智能算法(三)|模拟退火算法:深层分析_模拟退火 动画演示-CSDN博客 python学智能算法(四&#x…...
LabVIEW闭环控制系统硬件选型与实时性能
在LabVIEW闭环控制系统的开发中,硬件选型直接影响系统的实时性、精度与稳定性。需综合考虑数据采集速度(采样率、接口带宽)、计算延迟(算法复杂度、处理器性能)、输出响应时间(执行器延迟、控制周期&#x…...
JavaScript(Web APIs)
这个阶段两天也能看完 目录 壹_DOM-获取元素 00、获取DOM元素(根据CS选择器来获取DOM元素) 01、修改元素内容 02、修改CSS 03、H5自定义属性 04、定时器 贰_DOM-事件基础 00、事件监听 01、事件类型 02、事件对象 03、环境对象 04、回调函数 叁_DOM-事…...
创建Electron35 + vue3 + electron-builder项目,有很过坑,记录过程
环境: node v20.18.0 npm 11.1.0 用到的所有依赖: "dependencies": {"core-js": "^3.8.3","vue": "^3.2.13","vue-router": "^4.5.0"},"devDependencies": {"ba…...
机器视觉条形光源应用解析
在机器视觉中,条形光源是一种常见的照明设备,通过其特殊的形状和光路设计,能够有效解决检测中的光照均匀性、反光抑制、对比度增强等问题。以下是关于条形光源的详细解析: 1. 条形光源的基本结构与类型 结构:由多个LED灯珠沿直线或弧形排列,通常封装在长条形外壳中,可单…...
苹果商店上架流程,app上架发布流程
苹果商店地址 https://appstoreconnect.apple.com/login 其他地址:开发 - Apple Developer 1.更新代码 将项目的代码更新到最新,更新成功后右下角会给出提示 2.打开模拟器 鼠标右键可以选择设备(Device) 3.测试运行 如下图可以看到已经识别到设备了,点击运行即可,运行到模…...
大数据技术在土地利用规划中的应用分析
大数据技术在土地利用规划中的应用分析 一、引言 土地利用规划是对一定区域内的土地开发、利用、整治和保护所作出的统筹安排与战略部署,对于实现土地资源的优化配置、保障社会经济的可持续发展具有关键意义。在当今数字化时代,大数据技术凭借其海量数据处理、高效信息挖掘等…...
【Axure资料】110套优质可视化大屏模板+图表组件+科技感元件等
本作品集包含110套高保真可视化大屏模板,以及丰富的图表组件和科技感元件,旨在满足各行业对数据可视化展示的需求。所有模板和组件均基于Axure RP 9软件设计,确保高质量的交互体验和视觉效果。 作品类型:Axure原型模板 兼容版本&…...
TCP-IP协议通信模型
一、TCP/IP协议概述 TCP/IP协议即传输控制协议/互联网协议,也被称为网络通讯协议。它包含了一系列构成互联网基础的网络协议,是Internet的核心协议。 二、TCP/IP协议通信模型 文件中提到了TCP/IP协议通信模型,但未详细展开其具体层次结构和…...
VMware下载安装Ubuntu详解
一、Linux简介 1、不同领域的主流操作系统 桌面操作系统服务器操作系统移动设备操作系统嵌入式操作系统 1.1、桌面操作系统 Windows(用户数量最多)Mac OS(苹果电脑操作系统)Linux(用户数量少) 1.2、服…...
wpf label 内容绑定界面不显示
<Label Content"{Binding LabelText}" /> ... public string LabelText {get;set;}后端改变值后,界面内容并不显示 查看资料后改动如下 private string _labelText; public string LabelText{get { return _labelText; }set { _labelText value; OnPropertyCh…...
VC++ 获取目的IP的路由
GetBestRoute 函数获取到目的IP的最佳匹配路由。 第一个参数为:destination(目的IP) 第二个参数为:source(源IP) 通常不需要指定第二个source,这个一般用来匹配具体某一个网卡接口路由的&…...
海外跨境专线是什么?如何搭建海外跨境专线?
网络跨境专线——这一名词你听说过吗?如果你在跨境经济、国际贸易或网络通信领域工作,那它一定是你日常工作的一个重要话题。今天我们就来聊聊网络跨境专线的概念和搭建方法,希望能够为你在这一领域的探索提供一些帮助。 一、什么是网络跨境…...
【神经网络】python实现神经网络(二)——正向推理的模拟演练
一.神经网络假设 在开始讲解之前,首先我们假设有这样一套神经网络,一共有三层: 其中,关于神经网络的权重、偏置的符号定义如下(如果不知道什么是权重和偏置,可以参考我之前写过的一篇文章:【机器学习】机器学习是什么意思): 以下文章将沿用以上这个设…...
【从零开始学习计算机科学】操作系统(八)IO管理
【从零开始学习计算机科学】操作系统(八)IO管理 IO管理IO设备IO设备的分类IO控制器设备控制器的IO端口编址设备数据传输控制方法缓冲技术缓冲区的分类常用的缓冲技术虚拟设备IO设备的分配IO相关的软件的设计IO管理 IO设备 IO设备就是可以将数据输入到计算机,或者可以接收计…...
MySQL的安装及配置
一.以安装包方式下载 1.进入MySQL官网,下载安装包 官网链接:https://downloads.mysql.com/archives/installer/ 2.安装MySQL 二.压缩包方式下载 下载位置:mysql下载位置 解压缩后位置:D:\mysql-8.0.15-winx64 在主目录下复制…...
macOS 终端优化
macOS 安装、优化、还原、升级 Oh My Zsh 完全指南 🚀 Oh My Zsh 是 macOS 终端增强的利器,它能提供强大的自动补全、主题定制和插件支持,让你的终端更高效、更炫酷。本文将全面介绍 如何安装、优化、还原、重新安装和升级 Oh My Zsh&#x…...
Java三种注释方式
Java有三种注释:单行注释(//,从//到行尾被忽略,用于简单说明),多行注释(/* */,可包含多行内容,用于解释逻辑或禁用代码),文档注释(/**…...