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

GPLT-2025年第十届团体程序设计天梯赛总决赛题解(共计266分)

今天偶然发现天梯赛的代码还保存着,于是决定写下这篇题解,也算是复盘一下了

L1本来是打算写的稳妥点,最后在L1-6又想省时间,又忘记了insert,replace这些方法怎么用,也不想花时间写一个文件测试,最后用了两个vector<int>a,b每次操作来回传数组的元素,以为实现起来很方便,最后反而写了个170行的屎山代码,花了一个多小时的时间debug最后还只拿了5分,属于是左右脑互博了...

L2的话,L2-2写着写着把无解-1忘了?L2-4少了一些边界条件

L3 最后15分钟发现L3-3很多人拿了16分,于是火急火燎写了一个暴力,怒拿1分,赛后看代码才发现把同一种情况下的乘法写成加法了

欲速则不达,以后做事还是慢慢来,先把基础打扎实。接下来要准备考研了,就当这是个提醒吧。

L1-105 珍惜生命

#include<bits/stdc++.h>
using namespace std;
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
int n,m,k;
const int N=1e6+10;
void solve()
{cout<<"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.";
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}

L1-106 偷感好重

#include<bits/stdc++.h>
using namespace std;
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
int n,m,k;
const int N=1e6+10;
void solve()
{cin>>n>>m>>k;cout<<n+m+k<<'\n';
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}

L1-107 高温补贴

按照题意模拟

#include<bits/stdc++.h>
using namespace std;
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
int n,m,k;
const int N=1e6+10;
void solve()
{int t,s,t1;cin>>t>>s>>t1;if(t>=35&&s&&t1>=33)cout<<"Bu Tie\n"<<t;else if(t>=35&&!s&&t1>=33)cout<<"Shi Nei\n"<<t;else if(s)cout<<"Bu Re\n"<<t1;else cout<<"Shu Shi\n"<<t1;
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}

L1-108 零头就抹了吧

找到2^i中第一个大于付的钱的i,然后输出2^(i-1)

#include<bits/stdc++.h>
using namespace std;
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define pp pop_back()
#define fi first
#define se second
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
int n,m,k;
void solve()
{cin>>n;int i=0;while((1<<i)<=n){i++;}cout<<(1<<(i-1));
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}



L1-109 这是字符串题

#include<bits/stdc++.h>
using namespace std;
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define pp pop_back()
#define fi first
#define se second
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
int n,m,k;
const int N=1e6+10;
int a[N],b[N];
void solve()
{string s;cin>>s;_rep(i,0,25){cin>>a[i];}int res=0;for(auto i:s){res+=a[i-'a'];b[i-'a']++;}_rep(i,0,25){cout<<b[i]<<" \n"[i==25];}cout<<res<<endl;
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}

L1-110 这不是字符串题

用一个自增的cnt和vector<int>a,b,cnt为奇数就把a的东西存到b去,反之

#include<bits/stdc++.h>
using namespace std;
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define pp pop_back()
#define fi first
#define se second
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
int n,m,k;
const int N=1e6+10;
vector<int>a,b;
int cnt;
void solve()
{cin>>n>>m;_rep(i,1,n){int x;cin>>x;a.pb(x);}while(m--){cnt++;int op;cin>>op;if(op==1){int l1,l2;cin>>l1;vector<int>c;while(l1--){int x;cin>>x;c.pb(x);}cin>>l2;vector<int>d;while(l2--){int x;cin>>x;d.pb(x);}int idx=-1;if(cnt&1){for(int i=0;i<(int)a.size();i++){if(i+(int)c.size()>(int)a.size())break;bool bl=true;for(int j=0,k=i;j<(int)c.size();j++,k++){if(c[j]!=a[k]){bl=false;break;}}if(bl){idx=i;break;}}}else{for(int i=0;i<(int)b.size();i++){if(i+(int)c.size()>(int)b.size())break;bool bl=true;for(int j=0,k=i;j<(int)c.size();j++,k++){if(c[j]!=b[k]){bl=false;break;}}if(bl){idx=i;break;}}}if(idx!=-1){if(cnt&1){bool bl=false;for(int i=0;i<(int)a.size();i++){if(idx<=i&&i<=idx+((int)c.size())-1){if(!bl){for(auto k:d){b.pb(k);}bl=true;}}else b.pb(a[i]);}a.clear();}else {bool bl=false;for(int i=0;i<(int)b.size();i++){if(idx<=i&&i<=idx+((int)c.size())-1){if(!bl){for(auto k:d){a.pb(k);}bl=true;}}else a.pb(b[i]);}b.clear();}}else cnt++;}else if(op==2){if(cnt&1){for(int i=0;i<(int)a.size();i++){if(!i)b.pb(a[i]);else {if((a[i]+a[i-1])%2==0){b.pb((a[i]+a[i-1])/2);}b.pb(a[i]);}}a.clear();}else {for(int i=0;i<(int)b.size();i++){if(!i)a.pb(b[i]);else {if((b[i]+b[i-1])%2==0){a.pb((b[i]+b[i-1])/2);}a.pb(b[i]);}}b.clear();}}else {int l,r;cin>>l>>r;l--,r--;if(cnt&1){for(int i=0;i<(int)a.size();i++){if(l<=i&&i<=r){b.pb(a[l+r-i]);}else b.pb(a[i]);}a.clear();}else{for(int i=0;i<(int)b.size();i++){if(l<=i&&i<=r){a.pb(b[l+r-i]);}else a.pb(b[i]);}b.clear();}}}if(cnt%2==0){for(int i=0;i<(int)a.size();i++){cout<<a[i]<<" \n"[i==(int)a.size()-1];}}else {for(int i=0;i<(int)b.size();i++){cout<<b[i]<<" \n"[i==(int)b.size()-1];}}
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}

L1-111 大幂数

可以发现指数k(我的代码中是m)最大从31开始向下递减,每次暴力判断的时间复杂度是根号级别的,所以直接枚举指数然后判断即可

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define pp pop_back()
#define fi first
#define se second
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
int n,m,k;
const int N=1e6+10;
int qmi(int a,int b){int res=1;while(b){if(b&1)res=res*a;a=a*a;b>>=1;}return res;
}
vector<int>a,b;
int cnt;
int check(int k,int sum){int s=0;for(int i=1;;i++){s+=qmi(i,k);if(s==sum)return i;if(s>sum)return -1; }
}
void solve()
{cin>>n;int m=31;bool bl=false;while(m!=0){int t=check(m,n);if(t!=-1){_rep(i,1,t){cout<<i<<"^"<<m<<"+\n"[i==t];}bl=true;break;}m--;}if(!bl)cout<<"Impossible for "<<n<<".";
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}

L1-112 现代战争

用一个优先队列每次弹出最大值,然后弹出过后的话就把坐标的行列标记为使用过,于是每一轮弹出坐标,直到那个弹出的坐标的行列没有被使用过,那个坐标就是这一轮要被删除的坐标

#include<bits/stdc++.h>
using namespace std;
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define pp pop_back()
#define fi first
#define se second
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
int n,m,k;
const int N=1e6+10;
int g[1010][1010];
bool st[1010][1010];
struct aa{int i,j,w;
};
struct cmp{bool operator()(aa a,aa b){return a.w<b.w;}
};
void solve()
{int n,m,k;cin>>n>>m>>k;priority_queue<aa,vector<aa>,cmp>p;_rep(i,1,n){_rep(j,1,m){int x;cin>>x;g[i][j]=x;p.push({i,j,x});}}while(k--){auto t=p.top();while(1){p.pop();if(!st[t.i][t.j])break;t=p.top();}for(int j=1;j<=n;j++){st[j][t.j]=true;}for(int j=1;j<=m;j++){st[t.i][j]=true;}}for(int i=1;i<=n;i++){bool bl=false;for(int j=1;j<=m;j++){if(st[i][j])continue;if(bl)cout<<" ";bl=true;cout<<g[i][j];}if(bl)cout<<'\n';}
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}

L2-053 算式拆解

一个栈储存碰到的所有字母,遇到')'就一直弹出直到遇到‘(’,在这途中弹出的字符就是这一行的算式

#include<bits/stdc++.h>
using namespace std;
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define pp pop_back()
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
int n,m,k;
const int N=1e6+10;
void solve()
{string s;cin>>s;vector<char>v;for(auto i:s){if(i==')'){vector<char>now;while(v.back()!='('){now.pb(v.back());v.pp;}v.pp;reverse(all(now));for(int i=0;i<(int)now.size();i++){cout<<now[i];}cout<<'\n';}else v.pb(i);}
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}

L2-054 三点共线

枚举前两维(y=0,1),判断第三维(y=2),把y=2时的x存到数组里,不过要注意存的时候防止出现负数,最坏情况下,第一维1e6,第二维-1e6,为了防止负数所以第三维要整体+3e6

#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define double long double
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define pp pop_back()
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
#define laile	cout<<"laile"<<endl;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
int n,m,k;
const int N=1e6+10,INF=4e18;
vector<int>q[4];
bool st[4][N];
struct aa{int a,b,c;
};
bool cmp(aa a,aa b){if(a.b!=b.b)return a.b<b.b;return a.a<b.a;
}
vector<aa>res;
int has[6000001];
void solve()
{cin>>n;_rep(i,1,n){int x,y;cin>>x>>y;y++;if(y==3)has[x+3000010]++;else q[y].pb(x);}if(q[1].size())sort(all(q[1]));if(q[2].size())sort(all(q[2]));for(int i=0;i<(int)q[1].size();i++){int pre=0;if(i&&q[1][i]==q[1][i-1])continue;for(int j=0;j<(int)q[2].size();j++){if(j&&q[2][j]==q[2][j-1])continue;int sub=q[2][j]-q[1][i];if(has[q[2][j]+sub+3000010])res.pb({q[1][i],q[1][i]+sub,q[1][i]+2*sub});}}aa pre={-INF,-INF,-INF};sort(all(res),cmp);if(!res.size())cout<<"-1\n";else{for(auto i:res){if(pre.a!=i.a||pre.b!=i.b||pre.c!=i.c){cout<<"["<<i.a<<", 0] ["<<i.b<<", 1] ["<<i.c<<", 2]\n";}pre=i;}}
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}

L2-055 胖达的山头

最小区间覆盖问题​

先给区间排序,用multset存每个区间的右端点,每次找到multset中第一个大于当前区间左端点的点,然后把这个点替换成这个新的点,如果没找到就直接插入这个区间的右端点,最后multiset的元素个数就是最终答案

#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define double long double
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define pp pop_back()
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
#define laile	cout<<"laile"<<endl;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
int n,m,k;
const int N=1e6+10,INF=4e18;
struct aa{int i,j,w;
};
struct cmp{bool operator()(aa a,aa b){return a.w<b.w;}
};
vector<PII>v;
PII get(string &s){int a=0,b=0,now=0;for(auto i:s){if(isdigit(i)){now=now*10+i-'0';}else if(i==' '){a=now;now=0;}}return {a,now};
}
void solve()
{cin>>n;string s;getline(cin,s);while(n--){getline(cin,s);PII t=get(s);v.pb(t);}sort(all(v));multiset<int>now;for(auto i:v){if(!now.size()){now.insert(i.se);}else{int ma=0,maidx;bool bl=false;auto t=now.lower_bound(i.fi);if(t==now.begin()){now.insert(i.se);}else{t--;int tt=i.se;now.erase(t);now.insert(tt);}}}cout<<now.size()<<'\n';
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}

L2-056 被n整除的n位数

可以发现满足前i位被i整除的数字其实并不多,那么这题实际上就是直接暴力,这里我用的方法是逐位递增,用vector<int>v[16]存前i位满足在区间内部的所有数字,比如a=34567,b=66666,

首先v[1]显然可以存[3,4,5,6],

然后v[2]利用v[1]的值,遍历0~9,相当于枚举了30,31,32,33....40,41,....,68,69这些数字

然后用被 i 整除这个条件可以筛掉大部分数字,然后合法的又存到v[2]里,以此类推

#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize(2)
#define int long long 
#define double long double
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define pp pop_back()
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
#define laile	cout<<"laile"<<endl;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
int n,m,k;
const int N=1e6+10,INF=4e18;
int qmi(int a,int b){int res=1;while(b){if(b&1)res=res*a;a=a*a;b>>=1;}return res;
}
struct aa{int i,j,w;
};
struct cmp{bool operator()(aa a,aa b){return a.w<b.w;}
};
int get(int x){if(x==0)return 1;int res=0;while(x){x/=10;res++;}return res;
}
bool check(int x){if(get(x)!=n)return false;vector<int>now;while(x){now.pb(x%10);x/=10;}reverse(all(now));int cnt=0,sum=0;for(auto i:now){sum=sum*10+i;cnt++;if(sum%cnt!=0)return false;}return true;
}
vector<int>v[20];
int la[20],lb[20];
int nine(int x){int res=9;_rep(i,1,x-1){res=res*10+9;}return res;
}
void solve()
{int a,b;cin>>n>>a>>b;bool bl=false;if(get(a)<n){int t=1;_rep(i,1,n-1){t*=10;}a=t;}else if(get(a)>n){cout<<"No Solution";return;}if(get(b)>n){int t=9;_rep(i,1,n-1){t=t*10+9;}b=t;}else if(get(b)<n){cout<<"No Solution";return;}vector<int>aa,bb;int c=a;while(c){aa.pb(c%10);c/=10;}reverse(all(aa));c=b;while(c){bb.pb(c%10);c/=10;}reverse(all(bb));for(int i=1;i<=n;i++){la[i]=la[i-1]*10+aa[i-1];lb[i]=lb[i-1]*10+bb[i-1];}_rep(i,0,9){v[1].pb(i);}_rep(i,2,n){_rep(k,0,9){for(auto j:v[i-1]){int t=((j*10)+k);if(t%i==0&&t>=la[i]&&t<=lb[i]){v[i].pb(t);}}}}vector<int>res;for(auto i:v[n]){if(check(i)){res.pb(i);bl=true;}}sort(all(res));if(!bl)cout<<"No Solution";else{res.erase(unique(all(res)),res.end());for(int i=0;i<(int)res.size();i++){cout<<res[i]<<'\n';}}
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}

L3-040 人生就像一场旅行

类似最短路计数的思想

可以更新旅费(新路线旅费>原路线旅费)更新旅费和心情

否则如果新路线旅费=原路线旅费,更新心情更大的那条

#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize(2)
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define pp pop_back()
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
#define laile	cout<<"laile"<<endl;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
int n,m,k;
const int N=1e6+10,INF=4e18;
int qmi(int a,int b){int res=1;while(b){if(b&1)res=res*a;a=a*a;b>>=1;}return res;
}
int sum;
int g[510][510];
int happy[510][510];
int dist[510][510];
void solve()
{cin>>sum>>n>>m>>k;memset(g,0x3f,sizeof(g));_rep(i,1,n){g[i][i]=0;}_rep(i,1,m){int a,b,w,h;cin>>a>>b>>w>>h;g[a][b]=g[b][a]=w;happy[a][b]=happy[b][a]=h;}_rep(k,1,n){_rep(i,1,n){_rep(j,1,n){if(g[i][k]+g[k][j]<g[i][j]){g[i][j]=g[i][k]+g[k][j];happy[i][j]=happy[i][k]+happy[k][j];}else if(g[i][k]+g[k][j]==g[i][j])happy[i][j]=max(happy[i][k]+happy[k][j],happy[i][j]);}}}_rep(i,1,k){int x;cin>>x;vector<int>a,b;int ma=0;_rep(j,1,n){if(x==j)continue;if(g[x][j]<=sum){a.pb(j);if(happy[x][j]>ma){ma=happy[x][j];b.clear();b.pb(j);}else if(happy[x][j]==ma){b.pb(j);}}}if(!a.size()){cout<<"T_T\n";}else {sort(all(a));sort(all(b));for(int i=0;i<(int)a.size();i++){cout<<a[i]<<" \n"[i==(int)a.size()-1];}for(int i=0;i<(int)b.size();i++){cout<<b[i]<<" \n"[i==(int)b.size()-1];}}}
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}

L3-041 影响力

按题意暴力20分

#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize(2)
#define int long long
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define pp pop_back()
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
#define laile	cout<<"laile"<<endl;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
int n,m,k;
const int N=1e6+10,INF=4e18;
vector<vector<int>>v(N);
void solve()
{cin>>n>>m;_rep(i,1,n){v[i].pb(0);_rep(j,1,m){int x;cin>>x;v[i].pb(x);}}_rep(i,1,n){_rep(j,1,m){int res=0;_rep(k,1,n){_rep(l,1,m){res+=v[i][j]*max(abs(k-i),abs(l-j));}}cout<<res<<" \n"[j==m];}}
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}

L3-042 污染大亨

暴力dfs16分

有一个细节,dfs的时候会遍历到不同的游戏情况,在回溯完之后为了确定某个小镇是否被污染,判断污染的st数组可以直接开int型,每一次被污染就st[u]++,回溯就st[u]--,这样可以保证st[u]=0时走到这个分支时小镇从未被污染

#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize(2)
#define int long long 
#define double long double
#define _rep(i,a,b) for(int i=(int)(a);i<=(int)b;++i)
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define pp pop_back()
#define fi first
#define se second
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
int n,m,k;
const int N=1e6+10,INF=4e18,P=998244353;
vector<vector<int>>v(N);
int c[N];
int st[N];
int sum;
int qmi(int a,int b,int P){int res=1;while(b){if(b&1)res=res*a%P;a=a*a%P;b>>=1;}return res;
}
void infact(int u){sum++;st[u]++;for(auto i:v[u]){infact(i);}return;
}
void finfact(int u){st[u]--;for(auto i:v[u]){finfact(i);}return;
}
int res=0;
void dfs(int u,vector<int>&ve,int now){bool bl=false;_rep(i,1,n){if(st[i])continue;bl=true;sum=0;infact(i);dfs(u+1,ve,now*qmi(c[u],sum,P)%P);finfact(i);}if(!bl)res+=now,res%=P;
}
void solve()
{cin>>n;if(n==1){cout<<n<<'\n';}else {_rep(i,2,n){int x;cin>>x;v[x].pb(i);}_rep(i,1,n)cin>>c[i];vector<int>ve;dfs(1,ve,1);cout<<res;}
}
signed main()
{IOS;int T=1;
//	cin>>T;while(T--)solve();return 0;
}

相关文章:

GPLT-2025年第十届团体程序设计天梯赛总决赛题解(共计266分)

今天偶然发现天梯赛的代码还保存着&#xff0c;于是决定写下这篇题解&#xff0c;也算是复盘一下了 L1本来是打算写的稳妥点&#xff0c;最后在L1-6又想省时间&#xff0c;又忘记了insert&#xff0c;replace这些方法怎么用&#xff0c;也不想花时间写一个文件测试&#xff0c…...

MySQL数据库精研之旅第十期:打造高效联合查询的实战宝典(一)

专栏&#xff1a;MySQL数据库成长记 个人主页&#xff1a;手握风云 目录 一、简介 1.1. 为什么要使用联合查询 1.2. 多表联合查询时的计算 1.3. 示例 二、内连接 2.1. 语法 2.2. 示例 三、外连接 4.1. 语法 4.2. 示例 一、简介 1.1. 为什么要使用联合查询 一次查询需…...

zkPass案例实战之合约篇

目录 一、contracts/contracts/ProofVerifier.sol 1. License 和 Solidity 版本 2. 导入依赖 3. 合约声明和默认分配器地址 4. 验证证明 5. 验证分配器签名 6. 验证验证者签名 7. 签名前缀处理 8. 签名恢复 总结 二、contracts/contracts/SampleAttestation.sol 1. …...

15.FineReport动态展示需要的列

1.首先连接自带的sqlite数据库&#xff0c;具体方法参考下面的链接 点击查看连接sqlite数据库 2.文件 – 新建普通报表 3.新建数据库查询 4.查询自带的销售明细表 5.把数据添加到格子中&#xff0c;并设置边框颜色等格式 6.查询新的数据集&#xff1a;column 7.点笔 8.全部添…...

Windows云主机远程连接提示“出现了内部错误”

今天有人反馈说有个服务器突然连不上了&#xff0c;让我看下什么问题&#xff0c;我根据他给的账号密码试了下发现提示“出现了内部错误”&#xff0c;然后就是一通排查 先是查看安全组&#xff0c;没发现特别的问题&#xff0c;因为也没有调过这块的配置 然后通过控制台登录进…...

最新扣子(Coze)案例教程:Excel数据生成统计图表,自动清洗数据+转换可视化图表+零代码,完全免费教程

大家好&#xff0c;我是斜杠君。 知识星球群有同学和我说每天的工作涉及很多数据表的重复操作&#xff0c;想学习Excel数据表通过大模型自动转数据图片的功能。 今天斜杠君就带大家一起搭建一个智能体&#xff0c;以一个销售行业数据为例&#xff0c;可以快速实现自动清洗Exc…...

如何安装Visio(win10)

首先下载下面这些文件 HomeStudent2021Retail.img officedeploymenttool_17531-20046.exe office中文语言包.exe 确保这些文件都在一个文件夹内&#xff08;我已经上传这些资源&#xff0c;这些资源都是官网下载的&#xff09; 官网资源下载教程 1.下载Office镜像&#xff0…...

建筑安全员 A 证与 C 证:差异决定职业方向

在建筑行业的职业发展道路上&#xff0c;安全员 A 证和 C 证就像两条不同的岔路&#xff0c;它们之间的差异&#xff0c;在很大程度上决定了从业者的职业方向。 从证书性质和用途来看&#xff0c;A 证是从业资格证书&#xff0c;更像是一把开启安全管理高层岗位的 “金钥匙”。…...

Java Arrays工具类解析(Java 8-17)

一、Arrays工具类概述 java.util.Arrays是Java集合框架中提供的数组操作工具类&#xff0c;包含各种静态方法用于操作数组&#xff08;排序、搜索、比较、填充、复制等&#xff09;。自Java 8到17版本&#xff0c;Arrays类不断增强了功能&#xff0c;特别是引入了并行操作和St…...

(19)VTK C++开发示例 --- 分隔文本读取器

文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;VTK开发 &#x1f448; 1. 概述 本例采用坐标和法线&#xff08;x y z nx ny nz&#xff09;的纯文本文件&#xff0c;并将它们读入vtkPolyData并显示…...

Redis从入门到实战先导篇

前言&#xff1a;本节内容包括虚拟机VMware的安装&#xff0c;Linux系统的配置&#xff0c;FinalShell的下载与配置&#xff0c;Redis与其桌面客户端的安装指导,便于后续黑马Redis从入门到实战的课程学习 目录 主要内容 0.相关资源 1.VMware安装 2.Linux与CentOS安装 3.Fi…...

WebSocket是h5定义的,双向通信,节省资源,更好的及时通信

浏览器和服务器之间的通信更便利&#xff0c;比http的轮询等效率提高很多&#xff0c; WebSocket并不是权限的协议&#xff0c;而是利用http协议来建立连接 websocket必须由浏览器发起请求&#xff0c;协议是一个标准的http请求&#xff0c;格式如下 GET ws://example.com:3…...

uniapp中使用<cover-view>标签

文章背景&#xff1a; uniapp中遇到了原生组件(canvas)优先级过高覆盖vant组件 解决办法&#xff1a; 使用<cover-view>标签 踩坑&#xff1a; 我想实现的是一个vant组件库中动作面板的效果&#xff0c;能够从底部弹出框&#xff0c;让用户进行选择&#xff0c;我直…...

JavaScript 防抖和节流

方法一&#xff1a;使用lodash库的debounce方法 方法二&#xff1a;手写防抖函数 function debounce(fn,t){// 1.声明一个定时器变量 因为需要多次赋值 使用let声明let timer // 返回一个匿名函数return function(){if(timer){// 如果定时器存在清除之前的定时器 clearTimeout(…...

Spring Boot 启动时 `converting PropertySource ... to ...` 日志详解

Spring Boot 启动时 converting PropertySource ... to ... 日志详解 1. 日志背景 在 Spring Boot 应用启动过程中&#xff0c;会加载并处理多种 配置源&#xff08;如 application.properties、系统环境变量、命令行参数等&#xff09;。这些配置源会被封装为 PropertySource…...

分割数据集中.json格式标签转化成伪彩图图像

一、前言 图像分割任务中&#xff0c;分割数据集的转换和表示方式对于模型训练至关重要。目前主要有两种常见的分割结果表示方法&#xff1a; 1. 转化为TXT文件 这种方式通常使用一系列的点&#xff08;坐标&#xff09;来表示图像中每个像素的类别标签。每个点通常包含像素…...

Linux之彻底掌握防火墙-----安全管理详解

—— 小 峰 编 程 目录&#xff1a; 一、防火墙作用 二、防火墙分类 1、逻辑上划分&#xff1a;大体分为 主机防火墙 和 网络防火墙 2、物理上划分&#xff1a; 硬件防火墙 和 软件防火墙 三、硬件防火墙 四、软件防火墙 五、iptables 1、iptables的介绍 2、netfilter/…...

SwiftUI 常用控件简介

SwiftUI 是苹果公司推出的现代化声明式 UI 框架&#xff0c;用于构建 iOS、macOS、watchOS 和 tvOS 应用程序用户界面。以下是一些常用的 SwiftUI 控件&#xff1a; 1. 文本控件 Text: 显示一段文本。 2. 图像控件 Image: 显示图片&#xff0c;可以从系统图标、网络或本地资…...

HCIP-H12-821 核心知识梳理 (6)

ospf dr-priority命令默认值为1&#xff0c;取值范围为0~255.DHCPv6使用IPv6组播地址FF05::1:3用于中继代理和服务器之间的通信。VRF路由表里的OSPF外部路由允许被路由汇总&#xff08;asbr-summary)在IS-IS网络中&#xff0c;直连的两台路由器不管是P2P网络类型或是Broadcast网…...

Docker 安装配置教程(配置国内源)

## 一、Windows 安装 Docker Desktop 1. 系统要求: - Windows 10 64位:专业版、企业版或教育版 - 必须开启 Hyper-V 和容器功能 - 至少 4GB 内存 2. 安装步骤: - 访问 Docker 官网下载 Docker Desktop - 双击安装程序 - 按照向导完成安装 - 重启电脑 ## 二、macOS 安装 Dock…...

初识分布式事务原理

事务是指符合ACID特性的操作就是事务&#xff0c;在同一个数据库中&#xff0c;如果要分别对表A和表B进行插入和删除操作&#xff0c;如果其中一个操作执行失败&#xff0c;可以对当前数据库进行回滚&#xff0c;使其回滚到执行操作前的状态&#xff0c;但是现有的系统架构都是…...

# 构建和训练一个简单的CBOW词嵌入模型

构建和训练一个简单的CBOW词嵌入模型 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;词嵌入是一种将词汇映射到连续向量空间的技术&#xff0c;这些向量能够捕捉词汇之间的语义关系。在这篇文章中&#xff0c;我们将构建和训练一个简单的Continuous Bag of Words…...

Qt本地化-检测系统语言

获取系统语言&#xff0c;可以通过QLocale的接口 // 获取系统默认区域设置QLocale systemLocale QLocale::system();// 获取语言代码 (例如 "zh", "en", "ja" 等)QString language systemLocale.name().split(_).first(); //输出zh// 或者直接…...

Collection集合,List集合,set集合,Map集合

文章目录 集合框架认识集合集合体系结构Collection的功能常用功能三种遍历方式三种遍历方式的区别 List集合List的特点、特有功能ArrayList底层原理LinkedList底层原理LinkedList的应用场list:电影信息管理模块案例 Set集合set集合使用哈希值红黑树HashSet底层原理HashSet集合元…...

c++中iota容器和fill的区别

在C 中&#xff0c;std::iota 和 std::fill 都是标准库中的函数&#xff0c;用于对序列进行操作&#xff0c;它们的功能和用法如下&#xff1a; std::iota 功能&#xff1a;std::iota 函数用于将一个连续的递增序列赋值给指定范围的元素。它接受三个参数&#xff0c;第一个参…...

【CSS】层叠,优先级与继承(四):层叠,优先级与继承的关系

层叠&#xff0c;优先级与继承的关系 前文概括 【CSS】层叠&#xff0c;优先级与继承&#xff08;一&#xff09;&#xff1a;超详细层叠知识点 【CSS】层叠、优先级与继承&#xff08;二&#xff09;&#xff1a;超详细优先级知识点 【CSS】层叠&#xff0c;优先级与继承&am…...

jdk17的新特性

JDK 17 是 Java 的一个长期支持&#xff08;LTS&#xff09;版本&#xff0c;相较于 JDK 8 引入了许多新特性&#xff0c;下面从语法、性能、安全性等多个方面进行介绍&#xff1a; 语法层面 密封类&#xff08;Sealed Classes&#xff09; 简介&#xff1a;密封类和接口限制…...

C++如何分析和解决崩溃(crash)问题?如何查看core dump文件

在软件开发的世界中,C++作为一门高效且灵活的高级编程语言,广泛应用于系统编程、游戏开发、嵌入式系统以及高性能计算等领域。然而,正是由于其直接操作内存和资源的特性,C++程序在开发和运行过程中常常面临崩溃(crash)问题。这些崩溃不仅会中断程序的正常运行,还可能导致…...

Docker配置带证书的远程访问监听

一、生成证书和密钥 1、准备证书目录和生成CA证书 # 创建证书目录 mkdir -p /etc/docker/tls cd /etc/docker/tls # 生成CA密钥和证书 openssl req -x509 -newkey rsa:4096 -keyout ca-key.pem \ -out ca-cert.pem -days 365 -nodes -subj "/CNDocker CA" 2、为…...

Unity 创建、读取、改写Excel表格数据

1.导入EPPlus.dll、Excel.dll、Mysql.Data.dll、System.Data.dll&#xff1b;&#xff08;我这里用的是&#xff1a;Unity2017.3.0&#xff09; 2.代码如下&#xff1a; using System.Data; using System.IO; using UnityEngine; using OfficeOpenXml; using UnityEditor; us…...