当前位置: 首页 > news >正文

蓝桥杯真题演练:2023B组c/c++

日期统计


小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的范围之内。
数组中的元素从左至右如下所示:

5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2
7 0 5 8 8 5 7 0 9 9 1 9 4 4 6 8 6 3 3 8 5 1 6 3 4 6 7 0 7 8 2 7 6 8 9 5 6 5 6 1 4 0 1
0 0 9 4 8 0 9 1 2 8 5 0 2 5 3 3
现在他想要从这个数组中寻找一些满足以下条件的子序列:
1. 子序列的长度为 8;
2. 这个子序列可以按照下标顺序组成一个 yyyymmdd 格式的日期,并且
要求这个日期是 2023 年中的某一天的日期,例如 20230902,20231223。
yyyy 表示年份,mm 表示月份,dd 表示天数,当月份或者天数的长度只有一位时需要一个前导零补充。
请你帮小蓝计算下按上述条件一共能找到多少个不同的 2023 年的日期。
对于相同的日期你只需要统计一次即可。
本题的结果为一个整数,在提交答案时只输出这个整数,输出多余的内容将无法得分。

#include<bits/stdc++.h>
using namespace std;

int ans;//合法日期的总数
 
bool vis[20240000];//记录这个合法日期或是错误日期是否出现过 ,初始化为0,若为1则直接返回false 

int a[100];//记录输入的数组 

bool check(int  date){//检车这个日期是否是合法的日期 
    
    if(vis[date])return false;//之前出现过这个日期
     
    
    vis[date]=1;//若是没出现过,则把该日期标记为1 
    
    //判断这个日期是否为合法的日期 
    int mm=date/100%100;//取日期的月份 
    int dd=date%100;//日期天数 
    if(mm<1||mm>12)return false;//如过月数不是1~12,返回false 
    if(mm==1||mm==3||mm==7||mm==8||mm==10||mm==12){//1,2,5,7,8,10,(腊)12三十一天不差,判断月份为这些时,日期是否在1~31,若果是则然会true 
        if(dd>=1&&dd<=31)return true;
        
    }else if(mm==2){//2023年为闰年,所以有28天,判断月份为2时,日期是否在1~28,如果是则返回true,year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)判断闰年
        if(dd<1||dd>28)
            return true;
    }else if(dd>=1&&mm<=30){//取余月份天数为20天,看是否为1~30,如果是则返回true 
        return true;
    }else{
         return false;//其余情况则返回false 
    }
    
    

}


void dfs(int x,int pos,int date){//x为输入数组当前下标的位置,pos为构成日期的位数一共8位,每一位都要满足特定的要求,date为当前时间的值,只有当pos为8位并且初步合法时,date才为完全值 
        if(x==100)return;//输入的数组遍历完,直接结束dfs 
        if(pos==8){//pos等于8时,则意味着日期的长度符合 
            if(check(date))++ans;//长度符合,check检查一下这个日期是否是合法日期,如果合法,则ans数量+1 
            return;
        }
        
        if((pos==0&&a[x]==2)||//日期的每一位都初步符合,如果日期的位数与其该位数上的数字是否符合它的限制,因为dfs是一位一位的递增,因此只能初步筛选日期每一位上的数字,只有等日期长度等于8时,才能完全判断这个日期是否合法 
        (pos==1&&a[x]==0)||
        (pos==2&&a[x]==2)||
        (pos==3&&a[x]==3)||
        (pos==4&&0<=a[x]&&a[x]<=1)||
        (pos==5&&0<=a[x]&&a[x]<=9)||
        (pos==6&&0<=a[x]&&a[x]<=3)||
        (pos==7&&0<=a[x]&&a[x]<=9))
        dfs(x+1,pos+1,date*10+a[x]);//输入数组上的位置往后走,这一位合法pos往下走一位,临时的日期值*10+当前的这一位数字 
        
        dfs(x+1,pos,date);//输入数组位置往后走,这一位不合法,pos不+1,date也不改变        

int main(){
    
    ios::sync_with_stdio(0); cin.tie(0);//在C++中关闭输入输出流的同步,以提高程序的执行效率//cout.tie(0) 
    for(int i=0;i<100;i++)cin>>a[i]; //输入 
        dfs(0,0,0);//从第一个字符开始dfs 
    cout<<ans;//输出 

        
    return 0;

#include<bits/stdc++.h>
using namespace std;int ans;//合法日期的总数bool vis[20240000];//记录这个合法日期或是错误日期是否出现过 ,初始化为0,若为1则直接返回false int a[100];//记录输入的数组 bool check(int  date){//检车这个日期是否是合法的日期 if(vis[date])return false;//之前出现过这个日期vis[date]=1;//若是没出现过,则把该日期标记为1 //判断这个日期是否为合法的日期 int mm=date/100%100;//取日期的月份 int dd=date%100;//日期天数 if(mm<1||mm>12)return false;//如过月数不是1~12,返回false if(mm==1||mm==3||mm==7||mm==8||mm==10||mm==12){//1,2,5,7,8,10,(腊)12三十一天不差,判断月份为这些时,日期是否在1~31,若果是则然会true if(dd>=1&&dd<=31)return true;}else if(mm==2){//2023年为闰年,所以有28天,判断月份为2时,日期是否在1~28,如果是则返回true if(dd<1||dd>28)return true;}else if(dd>=1&&mm<=30){//取余月份天数为20天,看是否为1~30,如果是则返回true return true;}else{return false;//其余情况则返回false }}void dfs(int x,int pos,int date){//x为输入数组当前下标的位置,pos为构成日期的位数一共8位,每一位都要满足特定的要求,date为当前时间的值,只有当pos为8位并且初步合法时,date才为完全值 if(x==100)return;//输入的数组遍历完,直接结束dfs if(pos==8){//pos等于8时,则意味着日期的长度符合 if(check(date))++ans;//长度符合,check检查一下这个日期是否是合法日期,如果合法,则ans数量+1 return;}if((pos==0&&a[x]==2)||//日期的每一位都初步符合,如果日期的位数与其该位数上的数字是否符合它的限制,因为dfs是一位一位的递增,因此只能初步筛选日期每一位上的数字,只有等日期长度等于8时,才能完全判断这个日期是否合法 (pos==1&&a[x]==0)||(pos==2&&a[x]==2)||(pos==3&&a[x]==3)||(pos==4&&0<=a[x]&&a[x]<=1)||(pos==5&&0<=a[x]&&a[x]<=9)||(pos==6&&0<=a[x]&&a[x]<=3)||(pos==7&&0<=a[x]&&a[x]<=9))dfs(x+1,pos+1,date*10+a[x]);//输入数组上的位置往后走,这一位合法pos往下走一位,临时的日期值*10+当前的这一位数字 dfs(x+1,pos,date);//输入数组位置往后走,这一位不合法,pos不+1,date也不改变		
} 
int main(){ios::sync_with_stdio(0); cin.tie(0);//在C++中关闭输入输出流的同步,以提高程序的执行效率//cout.tie(0) for(int i=0;i<100;i++)cin>>a[i]; //输入 dfs(0,0,0);//从第一个字符开始dfs cout<<ans;//输出 return 0;
} 

01熵


对于一个长度为 n 的 01 串 S = x1x2x3...xn.
香农信息熵的定义为:


其中 p(0), p(1) 表示在这个 01 串中 0 和 1 出现的占比。
比如,对于S = 100 来说,信息熵 H(S ) = - 1/3 log2(1/3) - 2/3 log2(2/3) - 2/3 log2(2/3) = 1.3083。
对于一个长度为23333333 的 01 串,如果其信息熵为 11625907.5798,且 0 出现次数比 1 少,那么这个01 串中 0 出现了多少次?
本题的结果为一个整数,在提交答案时只输出这个整数,输出多余的内容将无法得分。



#include<bits/stdc++.h>
using namespace std;
typedef long double db;
const int N=23333333;//01串的长度 
const db ans=11625907.5798,eps=1e-4;//eps为误差10^-4,保持在这个误差范围内即可 
//因为浮点型有有效位,所以肯定有一定误差 
int main(){
    //整体采用直接暴力的解法 
    for(int v=0;v<=N/2;++v){//v为0的个数,因为0的个数是小于1的,因此小于总数的一半 
       int u=N-v;//u为1的个数 
    db res=-1.0*u*u/N*log2(1.0*u/N)-1.0*v*v/N*log2(1.0*v/N);//log2()函数求log以2为底的对数 
      if(fabs(res-ans)<eps){//两者相减去绝对值小于误差,则符合条件 fabs函数求绝对值 
         cout<<v;//输出0的个数 
         return 0;
         }
      }
            return 0;


#include<bits/stdc++.h>
using namespace std;
typedef long double db;
const int N=23333333;//01串的长度 
const db ans=11625907.5798,eps=1e-4;//eps为误差10^-4,保持在这个误差范围内即可 
//因为浮点型有有效位,所以肯定有一定误差 
int main(){//整体采用直接暴力的解法 for(int v=0;v<=N/2;++v){//v为0的个数,因为0的个数是小于1的,因此小于总数的一半 int u=N-v;//u为1的个数 db res=-1.0*u*u/N*log2(1.0*u/N)-1.0*v*v/N*log2(1.0*v/N);//log2()函数求log以2为底的对数 if(fabs(res-ans)<eps){//两者相减去绝对值小于误差,则符合条件 fabs函数求绝对值 cout<<v;//输出0的个数 return 0;}}return 0;
} 

冶炼金属

 

#include<bits/stdc++.h>
using namespace std;
const int MAX_N=1e4+1;
int N,A[MAX_N],B[MAX_N];
bool check_min(int v){for(int i=1;i<=N;i++){if(A[i]/v>B[i])return false;return true; }
}bool check_max( int v){for(int i=1;i<=N;i++){if(A[i]/V<B[i])return false;return true;}
}
int main(){ios::sync_with_stdio(0);cin.tie(0);cin>>N;for(int i=0;i<=N;i++){cin>>A[i]>>B[i];}int L=1,R=1000000000,V_min;while(l<R){int mid=L+R>>1;if(check_min(mid)){V_min=mid;R=mid-1; }else{L=mid+1;}}int L=1,R=1000000000,V_max;while(l<R){int mid=L+R>>1;if(check_max(mid)){V_max=mid;L=mid+1; }else{R=mid-1;}}cout<<v_min<<" "<<v_max;return 0;
}

 飞机降落

#include<bits/stdc++.h>
using namespace std;
const int MAX_N=11;
int n;
int N,T[MAX_N],D[MAX_N],L[MAX_N];bool used[MAX_N],have_answer;
void dfs(int x,int tim){if(have_answer)return;if(x==n){have_answer=1;return;}for(int i=1;i<=n;i++){if(!used[i]&&tim<=T[i]+D[i])used[i]=1;dfs(x+1,max(tim,T[i])+D[i]);if(have_answer)return;used[i]=0;}
}
void solve(){cin>>N;for(int i=1;i<=N;i++){cin>>T[i]>>D[i]>>L[i];used[i]=0;}dfs(0,0);if(have_answer)cout<<"YES\n";else cout<<"NO\n";}int main(){ios::sync_with_stdio(0);cin.tie(0);int T;cin>>T;while(T--)solve();return 0;
}

  接龙数列

 

#include<bits/stdc++.h>
using namespace std;
const int MAX_N=1e5+5;
int N,dp[10];int main(){ios::sync_with_stdio(0);cin.tie(0);cin>>N;for(int i=0;i<=N;i++){int A;cin>>A;vector<int>d;while(A){d.push_back(A%10);A/10;} int y=*d.begin(),x=d.back();dp[y]=max(dp[y],dp[x]+1); }int len=0;for(int i=0;i<10;i++){len=max(len,dp[i]);}cout<<N-len;return 0;
}

岛屿数量 

#include<bits/stdc++.h>
using namespace std;
const int MAX_N=51;
int M,N; 
string mp[MAX_N];
bool vis[MAX_N][MAX_N];//对岛进行染色
bool used[MAX_N][MAX_N];//是否逃出去,没检查一个岛,都要进行标记,因为当下一次遍历到该岛, 
int dx[]={0,0,1,-1,1,-1,1,-1};
int dy[]={1,-1,0,0,-1,1,1,-1}; 
void bfs_col(int x,int y){queue<int>qx,qy;qx.push(x);qy.push(y);vis[x][y]=1;//bfs坐标放进队列后,就标记 while(!qx.empty()){x=qx.front();qx.pop();                                                                                                                                                                                                                                                                                                                                            y=qy.front();qy.pop();for(int i=0;i<4;i++	){int nx=x+dx[i];int ny=y+dy[i];if(nx<0||M<=nx||ny<0||N<=ny||vis[ny][nx]||mp[nx][ny]=='0')continue;//越界或是海水,或被访问过就跳过 qx.push(nx);qy.push(ny);vis[nx][ny]=1;//标记 }		}
}	bool bfs_out(int x,int y){//逃出去 for(int i=0;i<M;i++)for(int j=0;j<N;j++)used[i][j]=0;//清空标记,从0开始找出口 queue<int>qx,qy;qx.push(x);qy.push(y); used[x][y]=1;//放入队列后再标记,下一次不能再访问while(!qx.empty()){x=qx.front();qx.pop();y=qy.front();qy.pop(); if(x==0||x==M-1||y==0||y==N-1)return true;//如果到达边界(到达边界,而不是超越边界),就返回true; for(int i=0;i<8;i++){int nx=x+dx[i];int ny=y+dy[i];if(nx<0||M<=nx||ny<0||N<=ny||used[ny][nx]||mp[nx][ny]=='1')continue;qx.push(nx);qy.push(ny);used[nx][ny]=1;//标记的目的是为了让他不走回头路 }}}void solve(){cin>>M>>N;for(int i=0;i<M;i++){cin>>mp[i];for(int j=0;j<N;j++){vis[i][j]=0;	}}	int ans=0;for(int i=0;i<M;i++){for(int j=0;j<N;j++){if(!vis[i][j]&&mp[i][j]=='1'){bfs_out(i,j);//先进行染色 if(bfs_out(i,j))++ans;//看是否能逃出去,若是该点为内岛,则外岛已经被染色 }}}cout<<ans<<'\n'; }int main(){ios::sync_with_stdio(0);cin.tie(0);int T;cin>>T;while(T--){solve();}return 0;
}

 

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int K;
string S;
char c1,c2;
int main(){cin>>K>>S>>c1>>c2;int sum_c1=0;int n=S.size();for(int i=k-1,j=0;i<n;i++,j++){//前缀和,sum_c1记录前面a的数量,当i所在位置为b时,子串简写的数量就是b前面a的数量,不包括前k个位置内的a,  if(S[j]==c1)++sum_c1;if(S[i]==c2)ans+=sum_c1;}cout<<ans;return 0;return 0;
}

 整数删除 

#include<bits/stdc++.h>
using namespace std;
#define val first
#define pos second
const int MAX_N=5e5+5;
int N,K,pre[MAX_N],nxt[MAX_N];
typedef long long LL; 
typedef pair<LL,int>PLI;
priority_queue<PLI>q;
LL A[MAX_N]; int main(){ios::sync_with_stdio(0);cin.tie(0);cin>>N>>K;for(int i=1;i<=N;i++){cin>>A[i];pre[i]=i-1;nxt[i]=i+1;q.push({-A[i],-i});}pre[1]=-1;nxt[N]=-1;while(K--){PLI now;do{now=q.top();q.pop();now.val=-now.val;now.pos=-now.pos;//原本是负的,该为正的 }while(A[now.pos]!=now.val);int PRE=pre[now.pos];int NXT=nxt[now.pos];if(PRE!=-1){A[PRE]+=now.val;q.push({-A[PRE],-PRE});nxt[PRE]=NXT;}if(NXT!=-1){A[NXT]+=now.val;q.push({-A[NXT],-NXT});pre[NXT]=PRE;}A[now.pos]=-1;}for(int i=1;i<=N;i++){if(A[i]!=-1){cout<<A[i]<<' ';}}return 0;
}

 景区导游

DFS遍历图(暴力做法) 
正解:树上前缀和、最近公共祖先

树:一种数据结构,无环连通图

无环连通图-->任意两个点之间存在唯一的一条路径
 
 
2 6 5 1
记作一个点都不去掉之前,总的花费记作sum
(1)去掉2   sum-cost[2->6]
(2)去掉6   sum-cost[2->6]-cost[6->5]+cost[2->5] 
(3)去掉5   sum-cost[6->5]-cost[5->1]+cost[6->1]
(4)去掉1   sum-cost[5->1]

暴力做法:DFS:O(n)
优化后的做法,树上前缀和+最近公共祖先O(logn)
 
图的存储:
链式前向型:链表
vector容器存图
二者的原理: 存储当前点的邻接点
 x->y
 edge[x].push_back(y);存储了一条x->y的边
无向边的存储,就是存储两条有向边
x-y
edge[x].push_back(y);
edge[y].push_back(x);

DFS组成{
    iF()
    {    递归终止的条件 
    }
    
    往下递归的过程 

 


#include<bits/stdc++.h>
#define endl '\n'
#define deb(x) cout<<ax<<" = "<<x<<'\n';
#define INF 0x3f3f3f3f
#define int long long
using namespace std;
const int N=2e5+10;
typedef pair<int,int> pii;
map<pil,int>st;//记录从x到y的距离是多少 
int a[N];
vector<pii>edge[N];//存图 //dfs的参数不是一下就想到的,而是在写的1过程中发
//现你需要某个信息,而这个信息你没有提前记录 ,
//那么你可以把这个信息当作一个参数,此时就达到了记录信息的目的 //s路程的起点
//v路径的终点
//u你当前走到了哪个点
//father当前这个点的父亲节点是谁,避免重复走 
//sum从s走到u的路径花费总和 
bool dfs(int s,int u,int father,int v,int sum){if(u==v){st[{s,v}]=sum;st[{v,s}]=sum;return true; } for(int i=0;i<edge[u].size();i++){int son=edge[u][i].first;if(son==father){continue;}int w=edge[u][i].second;if(dfs(s,son,u,v,sum+w))//如果找到了,直接return true即可,剩下的不用遍历; return true;}return false;}void  solve(){int n,k;cin>>n>>k;for(int i=0;i<n;i++){int x,y,t;cin>>x>>y>>t;edge[x].push_back({y,t});//存图 edge[y].push_back({x,t});}for(int i=0;i<k;++){//存路线 cin>>a[i];} int ans=0;for(int i=0;i<k-1;i++){dfs(a[i],a[i],-1,a[i+1],0);//路线上的点位之间的距离 ans+=st[{a[i],a[i+1]}];}for(int i=0;i<k;i++){int tmp=ans;/*记作一个点都不去掉之前,总的花费记作sum
(1)去掉2   sum-cost[2->6]
(2)去掉6   sum-cost[2->6]-cost[6->5]+cost[2->5] 
(3)去掉5   sum-cost[6->5]-cost[5->1]+cost[6->1]
(4)去掉1   sum-cost[5->1]
*/if(i==0){tmp-=st[{a[i],a[i+1]}];}else if(i==k-1){tmp-=st[{a[i-1],a[i]}];}else{tmp-=st[{a[i-1],a[i]}];tmp-=st[{a[i],a[i+1]}];dfs(a[i-1],a[i+1],-1,a[i+1],0);tmp+=st[{a[i-1],a[i+1]}];}cout<<tmp<<endl;}}

上面复杂度优点高了
 
正解是优化cost的求法
可以在O(n)的复杂度内预处理出来当前带你到根节点的距离
6->5的距离=cost[0->1]+cost[5->1]-2*cost[3->1]
求最近的公共祖先
3是6和5的最近公共祖先

公共祖先求解的过程是logn 

最近公共祖先:
     一共有三种写法,倍增,树链部分,tarjan

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAX_N=1e5+1;
vector<int>E[MAX_N],W[MAX_N];
int N,K,dep[MAX_N],fa[MAX_N][21],A[MAX_N];
LL dis[MAX_N];//用倍增法求最近公共父节点 
void dfs(int u,int Fa){dep[u]=dep[Fa]+1;fa[u][0]=Fa;for(int i=1;i<=20;i++){fa[u][i]=fa[fa[u][i-1]][i-1];  }for(int i=0;i<E[u].size();i++){int v=E[u][i],w=W[u][i];if(v==Fa)continue;dis[v]=dis[u]+w;dfs(v,u);}
}int LCA(int u,int v){if(dep[u]<dep[v])swap(u,v);for(int i=20;i>=0;i--){if(dep[fa[u][i]]>=dep[v])u=fa[u][i];}if(u==v)return u;for(int i=20;i>=0;i++){if(fa[u][i]!=fa[v][i]){u=fa[u][i];v=fa[v][i];}}return fa[u][0];}LL path_dis(int u,int v){if(!u||!v)return 0;//如果删除的点是两边的其中一边,在减该点没有边的点到它的距离时,则返回零 //涉及不存在的点时,返回0; return dis[u]+dis[v]-2*dis[LCA(u,v)];
} 
int main() {ios::sync_with_stdio(0);cin.tie(0);cin>>N>>K;for(int i=1;i<N;++i){int u,v,t; cin>>u>>v>>t;E[u].push_back(v);W[u].push_back(t);E[v].push_back(u);W[v].push_back(t);}	dfs(1,0);LL ans=0;for(int i=1;i<N;i++){cin>>A[i];ans+=path_dis(A[i],A[i-1]);//总长度 }for(int i=1;i<=k;i++){//减去两点到该点的距离,加上两点之间的距离 cout<<ans-path_dis(A[i-1],A[i])-path_dis(A[i],A[i+1])+path_dis(A[i-1],A[i+1])<<' ';}return 0;}

砍树 


#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
vector<int>e[N],num[N];
int n,m,dep[N],s[N],fa[N][21],ans; void dfs(int u,int Fa){dep[u]=dep[Fa]+1;fa[u][0]=Fa;for(int i=1;i<20;i++){fa[u][i]=fa[fa[u][i-1]][i-1];}for(auto &v:e[u]){//c11if(v==Fa)continue;dfs(v,u);}
}
void dfs2(int u,int Fa){for(int i=0;i<e[u].size();i++){int v=e[u][i],p=num[u][i];if(v==Fa)continue;dfs2(v,u);s[u]+=s[v];//差分 if(s[v]==m)ans==max(ans,p);}
}int LCA(int u,int v){if(dep[u]<dep[v])swap(u,v);   for(int i=20;i>=0;i--){if(dep[fa[u][i]]>=dep[v])u=fa[u][i];}if(u==v)return u;for(int i=20;i>=0;i--){if(fa[u][i]!=fa[v][i]){u=fa[u][i];v=fa[v][i];}	}return fa[u][0];
}int main(){cin>>n>>m;for(int i=1;i<n;i++){int x,y;cin>>x>>y;e[x].push_back(y);num[x].push_back(i);e[y].push_back(x);num[y].push_back(i);}dfs(1,0);for(int i=1;i<=m;i++){int a,b;cin>>a>>b;s[a]++;s[b]++;s[LCA(a,b)]-=2;
//两点到最近公共祖先那停止,若想断开两点,深度需要小于两点的最近公共祖先	即高于公共祖先的边,取消掉两点的差分和}dfs2(1,0);cout<<ans<<endl;return 0;
}

相关文章:

蓝桥杯真题演练:2023B组c/c++

日期统计 小蓝现在有一个长度为 100 的数组&#xff0c;数组中的每个元素的值都在 0 到 9 的范围之内。 数组中的元素从左至右如下所示&#xff1a; 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0 9 9 1 9 4 4 6 8 6 3 …...

微信小程序实现预约生成二维码

业务需求&#xff1a;点击预约按钮即可生成二维码凭码入校参观~ 一.创建页面 如下是博主自己写的wxml&#xff1a; <swiper indicator-dots indicator-color"white" indicator-active-color"blue" autoplay interval"2000" circular > &…...

专业140+总分410+北京理工大学826信号处理导论考研经验北理工电子信息通信工程,真题,参考书,大纲。

今年考研专业课826信号处理导论&#xff08;信号系统和数字信号处理&#xff09;140&#xff0c;总分410&#xff0c;顺利上岸&#xff01;回看去年将近一年的复习&#xff0c;还是记忆犹新&#xff0c;有不少经历想和大家分享&#xff0c;有得有失&#xff0c;希望可以对大家复…...

做一个后台项目的架构

后台架构的11个维度 架构1&#xff1a;团队协助基础工具链的选型和培训架构2&#xff1a;搭建微服务开发基础设施架构3&#xff1a;选择合适的RPC框架架构4&#xff1a;选择和搭建高可用的注册中心架构5&#xff1a;选择和搭建高可用的配置中心架构6&#xff1a;选择和搭建高性…...

嵌入式单片机 TTL电平、232电平、485电平的区别和联系

一、简介 TTL、232和485是常见的串口通信标准&#xff0c;它们在电平和通信方式上有所不同&#xff0c; ①一般情况下TTL电平应用于单片机外设&#xff0c;属于MCU/CPU等片外外设&#xff1b; ②232/485电平应用于产品整体对外的接口&#xff0c;一般是片外TTL串口转232/485…...

2024年大唐杯备考

努力更新中…… 第一章 网络架构和组网部署 1.1 5G的网络整体架构 5G网络中的中传、回传、前传&#xff08;这里属于承载网的概念&#xff09; CU和DU之间是中传 BBU和5GC之间是回传 BBU和AAU之间是前传&#xff08;这个好记&#xff09; 这里竟然还藏了MEC&#xff08;…...

Spring Boot(06):Spring Boot与MySQL搭配,打造极简高效的数据管理系统

1. 前言 Spring Boot 是一个基于Spring框架的快速开发框架&#xff0c;可以使开发者快速搭建一个可靠的Java Web应用程序。而MySQL是最广泛使用的关系型数据库系统之一&#xff0c;也是Spring Boot整合数据库的首选。本文将介绍Spring Boot如何整合MySQL数据库。 2. 摘要 本文…...

Vue3 + Vite 构建组件库发布到 npm

你有构建完组件库后&#xff0c;因为不知道如何发布到 npm 的烦恼吗&#xff1f;本教程手把手教你用 Vite 构建组件库发布到 npm 搭建项目 这里我们使用 Vite 初始化项目&#xff0c;执行命令&#xff1a; pnpm create vite my-vue-app --template vue这里以我的项目 vue3-xm…...

Vite多环境配置与打包:灵活高效的Vue开发工作流

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…...

从零实现诗词GPT大模型:数据集介绍和预处理

专栏规划: https://qibin.blog.csdn.net/article/details/137728228 本章将介绍该系列文章中使用的数据集&#xff0c;并且编写预处理代码&#xff0c;处理成咱们需要的格式。 一、数据集介绍 咱们使用的数据集名称是chinese-poetry&#xff0c;是一个在github上开源的中文诗…...

45.HarmonyOS鸿蒙系统 App(ArkUI)创建列表(List)

列表是一种复杂的容器&#xff0c;当列表项达到一定数量&#xff0c;内容超过屏幕大小时&#xff0c;可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集&#xff0c;例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求&#xff08;如通讯录、音乐列…...

推荐算法之协同过滤

算法原理 透过百科&#xff0c;我们了解到协同过滤推荐&#xff08;Collaborative Filtering recommendation&#xff09;是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同&#xff0c;协同过滤算法结合用户行为分析用户…...

Kotlin 面试题

lifecycleScope.launchWhenResumed launchWhenResumed是一个扩展函数,它是LifecycleCoroutineScope的一部分,并且它是在Android的Lifecycle库中引入的。 这个函数的主要目的是在Lifecycle的对应组件(通常是Activity或Fragment)处于“resumed”状态时启动协程。 public fun …...

TCM(Tightly Coupled Memory)紧密耦合存储器简介

在ARM Cortex处理器中&#xff0c;TCM通常指的是紧密耦合存储器&#xff08;Tightly Coupled Memory&#xff09;。TCM是一种位于处理器核心旁边的高速存储器&#xff0c;它的设计目的是为了提供低延迟和高带宽的内存访问性能。 TCM的特点是它与处理器内核紧密耦合&#xff0c;…...

《自动机理论、语言和计算导论》阅读笔记:p172-p224

《自动机理论、语言和计算导论》学习第 8 天&#xff0c;p172-p224总结&#xff0c;总计 53 页。 一、技术总结 1.Context-Free Grammar(CFG) 2.parse tree (1)定义 p183&#xff0c;But perhaps more importantly, the tree, known as a “parse tree”, when used in a …...

typescript playwright 笔记

录制调式 命令 npx playwright codegen url npx playwright codegen https://www.baidu.com/typescript 中 format 和 split 的使用 import * as util from util;const str1 hellow %s; const format util.format; const str2 format(str1, word);// 提取taskId const str3…...

从零实现诗词GPT大模型:了解Transformer架构

专栏规划: https://qibin.blog.csdn.net/article/details/137728228 这篇文档我们开始对GPT的核心组件Transformer进行一个详细的讲解, 加急编写中…...

温故知新之-TCP Keepalive机制及长短连接

[学习记录] 前言 TCP连接一旦建立&#xff0c;只要连接双方不主动 close &#xff0c;连接就会一直保持。但建立连接的双方并不是一直都存在数据交互&#xff0c;所以在实际使用中会存在两种情况&#xff1a;一种是每次使用完&#xff0c;主动close&#xff0c;即短连接&…...

架构师系列-搜索引擎ElasticSearch(七)- 集群管理之分片

集群健康检查 Elasticsearch 的集群监控信息中包含了许多的统计数据&#xff0c;其中最为重要的一项就是集群健康&#xff0c;它在 status字段中展示为 green&#xff08;所有主分片和副本分片都正常&#xff09;、yellow&#xff08;所有数据可用&#xff0c;有些副本分片尚未…...

基于Spring Boot实现的图书个性化推荐系统

基于Spring Boot实现的图书个性化推荐系统 开发语言&#xff1a;Java语言 数据库&#xff1a;MySQL工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统实现 前台首页功能模块 学生注册 登录 图书信息 个人信息 管理员功能模块 学生管理界面图 图书分类管理界面图 图书信息管…...

安全加速SCDN带的态势感知能为网站安全带来哪些帮助

随着安全加速SCDN被越来越多的用户使用&#xff0c;很多用户都不知道安全加速SCDN的态势感知是用于做什么的&#xff0c;德迅云安全今天就带大家来了解下什么是态势感知&#xff0c;态势感知顾名思义就是对未发生的事件进行预知&#xff0c;并提前进行防范措施的布置&#xff0…...

java面向对象.day21(继承02--super)

说明 super父 this当前 使用super时&#xff0c;首先要继承父类&#xff0c;其次是在子类里面才能使用super。 继承父类后&#xff0c;运行子类时会同时调用父类的构造方法&#xff0c;如果要显性调用父类的构造方法必须在子类的第一行调用。 单使用super()表示调用父类构造…...

【数据结构】4.List的介绍

目录 1.什么是List 2.常见接口介绍 3.List的使用 1.什么是List 在集合框架中&#xff0c;List是一个接口&#xff0c;继承自Collection。 Collection也是一个接口&#xff0c;该接口中规范了后序容器中常用的一些方法&#xff0c;具体如下&#xff1a; Iterable也是一个接口…...

acwing算法提高之图论--最近公共祖先

目录 1 介绍2 训练 1 介绍 本博客用来记录"对于有根图中&#xff0c;求最近公共祖先"的题目。 求解方法&#xff1a; 向上标记法。每次求两个结点的最近公共祖先的时间复杂度是O(N)。由于时间复杂度较高&#xff0c;通常不用。倍增法。 倍增法重要思路&#xff1…...

C语言 函数——断言与防御式编程

目录 如何确定假设的真假&#xff1f; 断言 防御式编程&#xff08;Defensive programming&#xff09; 如何确定假设的真假&#xff1f; 程序中的假设 *某个特定点的某个表达式的值一定为真 *某个特定点的某个表达式的值一定位于某个区间等 问题&#xff1a;如何确定这些…...

【opencv】示例-travelsalesman.cpp 使用模拟退火算法求解旅行商问题

// 载入 OpenCV 的核心头文件 #include <opencv2/core.hpp> // 载入 OpenCV 的图像处理头文件 #include <opencv2/imgproc.hpp> // 载入 OpenCV 的高层GUI(图形用户界面)头文件 #include <opencv2/highgui.hpp> // 载入 OpenCV 的机器学习模块头文件 #includ…...

【linux深入剖析】深入理解软硬链接 | 动静态库的制作以及使用

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1.理解软硬链接1.1 操作观…...

xss常用标签和触发事件

无过滤情况 <script> <scirpt>alert("xss");</script> <img> 图片加载错误时触发 <img src"x" οnerrοralert(1)> <img src"1" οnerrοreval("alert(xss)")> 鼠标指针移动到元素时触发 <im…...

WPF中Binding的原理和应用

WPF中Binding的原理和应用 在WPF中&#xff0c;Binding机制是实现数据与界面的连接和同步的重要工具。了解Binding的原理和应用&#xff0c;对于开发人员来说是非常重要的。本文将详细介绍WPF中Binding的原理和应用&#xff0c;帮助读者更好地理解和运用这一强大的机制。 Bin…...

探索设计模式的魅力:深度挖掘响应式模式的潜力,从而精准优化AI与机器学习项目的运行效能,引领技术革新潮流

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 挖掘响应式模式&#xff0c;优化AI与机器学习项目性能&#xff0c;引领技术新潮流 ✨机器学习界的…...

镇江网站建设联系思创/sem是什么电镜

在总部位于新加坡的员工福利初创公司CXA Group对我们的核心Web平台进行评估的过程中&#xff0c;我们决定将方向从陈旧的现有体系结构转向&#xff0c;从头开始重建前端。 该平台面临的挑战之一是创建一个在CXA Group的12个目标国家/地区&#xff08;在整个亚洲&#xff09;都能…...

wordpress主题配置文件/快速刷排名seo软件

centos7和centos6通过yum安装JDK1.8 查看JDK的安装路径# java -version查看Linux系统版本信息# cat /etc/redhat-releaseCentOS release 6.9 (Final)[rootli409-225 ~]# cat /etc/issueCentOS release 6.9 (Final)Kernel \r on an \mcentos6或centos7都可用的 yum安装jdk安装之…...

网站建设的标准/百度 营销推广靠谱吗

1jsonp 一般接口使用jsonp跨域&#xff0c;使用jquery的ajax指定dataType为jsonp即可 $.ajax({async : true,url : "https://api.douban.com/v2/book/search",type : "GET",dataType : "jsonp", // 返回的数据类型&#xff0c;设置为JSONP方式js…...

岱岳区建设信息网站/外贸网站建站平台

A1 网友年龄 某君新认识一网友。当问及年龄时&#xff0c;他的网友说&#xff1a;“我的年龄是个2位数&#xff0c;我比儿子大27岁&#xff0c;如果把我的年龄的两位数字交换位置&#xff0c;刚好就是我儿子的年龄”    请你计算&#xff1a;网友的年龄一共有多少种可能情况&…...

写字楼装修公司/谷歌aso优化

安装 --网络 --存储 --用户 --对象 --ASM &#xff08;包含前面的内容的复习&#xff09;--内存管理 -- 备份 --闪回 -- 事务 --sql 编程 转载于:https://www.cnblogs.com/niaocaizhou/p/10848652.html...

网站维护成本/谷歌seo网站优化

原标题&#xff1a;【深度解析】第三方支付的分类、接口与支付流程 目录 - - - - - 1. 概述 2. 支付环节 3. 分类 4. 银行接口 如今第三方支付已经发展的非常成熟&#xff0c;但是至今仍未有一个比较权威的定义&#xff0c;下面将根据自己的工作经历说明一下第三方支付&#xf…...