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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/80136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编码转换器

大批量转换编码 可以将整个工程文件夹从GB18030转为UTF-8 使用Qt C制作 项目背景 比较老的工程&#xff0c;尤其是keil嵌入式的工程&#xff0c;其文本文件&#xff08;.c、.cpp、.h、.txt、……&#xff09;编码为gb2312&#xff0c;这为移植维护等带来了不便。现在uit-8用…

STL 核心模块

很好&#xff01;你想深入 STL&#xff08;Standard Template Library&#xff09;和容器算法&#xff0c;是学习 C 非常关键的一步。下面我给你整理一份STL 容器 算法的入门指南&#xff0c;适合从零起步掌握这部分内容。 &#x1f31f; 一、STL 核心模块 STL 分为三大块&am…

2024沈阳区域赛,D - Dot Product Game

题目链接 树状数组求逆序对 #include<bits/stdc.h> using namespace std; using lllong long; typedef pair<int,int>PII; typedef priority_queue<int> upq; typedef priority_queue<int,vector<int>,greater<int>> dpq; const int M99…

简易博客点赞系统实现

简易博客点赞系统 好久没写 Java 了&#xff0c;整个简单的项目进行康复训练。 基于 Spring Boot SSM MySQL Mybatis-Plus Knife4j Swagger 的一个简易博客点赞系统 开源地址&#xff1a;https://github.com/FangMoyu/simple-thumb 功能 登录获取当前登录用户获取博客…

一个既简单又诡异的问题

public class DaYaoGuai {static String s;public static void main(String[] args) {Thread t1 new Thread(){Overridepublic void run() {try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}s"深圳";}};t1.start();Thre…

使用docker在manjaro linux系统上运行windows和ubuntu

因为最近项目必须要使用指定版本的solidworks和maxwell&#xff08;都只能在win系统上使用&#xff09;, 且目前的ubuntu容器是没有桌面的&#xff0c;导致我运行不了一些带图形的ros2功能。无奈之下&#xff0c;决定使用docker-compose写一下配置文件&#xff0c;彻底解决问题…

Elasticsearch中的_source字段讲解

_source 在 Elasticsearch 查询中用于限制返回的字段,类似于 SQL 中的 SELECT 指定列。 代码示例: esSearchResults = es_service.search_documents({"query": {"terms": {"file_id":

【论文阅读20】-CNN-Attention-BiGRU-滑坡预测(2025-03)

这篇论文主要探讨了基于深度学习的滑坡位移预测模型&#xff0c;结合了MT-InSAR&#xff08;多时相合成孔径雷达干涉测量&#xff09;观测数据&#xff0c;提出了一种具有可解释性的滑坡位移预测方法。 [1] Zhou C, Ye M, Xia Z, et al. An interpretable attention-based deep…

C++ 的 IO 流

&#x1f4ac; &#xff1a;如果你在阅读过程中有任何疑问或想要进一步探讨的内容&#xff0c;欢迎在评论区畅所欲言&#xff01;我们一起学习、共同成长~&#xff01; &#x1f44d; &#xff1a;如果你觉得这篇文章还不错&#xff0c;不妨顺手点个赞、加入收藏&#xff0c;并…

spring cloud gateway前面是否必须要有个nginx

在 **"客户端 → Nginx (前置限流) → Spring Cloud Gateway → 微服务(Sentinel 熔断限流)"** 的架构中&#xff0c;**Spring Cloud Gateway 前面并不强制要求必须有 Nginx**&#xff0c;是否需要取决于具体场景。以下是详细分析&#xff1a; 一、必须使用 Nginx 的…

Spark和Hadoop之间的对比和联系

&#xff08;一&#xff09;Spark概述 Spark是一种基于内存的快速、通用、可拓展的大数据分析计算引擎。Hadoop是一个分布式系统基础架构。 1&#xff09;官网地址&#xff1a;Apache Spark™ - Unified Engine for large-scale data analytics 2&#xff09;文档查看地址&…

多线程进阶(Java)

注&#xff1a;此博文为本人学习过程中的笔记 1.常见的锁策略 当我们需要自己实现一把锁时&#xff0c;需要关注锁策略。Java提供的synchronized已经非常好用了&#xff0c;覆盖了绝大多数的使用场景。此处的锁策略并不是和Java强相关的&#xff0c;只要涉及到并发编程&#…

c++STL——stack、queue、priority_queue的模拟实现

文章目录 stack、queue、priority_queue的模拟实现使用部分模拟实现容器适配器deque的介绍原理真实结构deque的迭代器deque的操作deque的优缺点 stack的模拟实现按需实例化queue的模拟实现priority_queue的模拟实现为何引入仿函数代码实现 stack、queue、priority_queue的模拟实…

【深度学习—李宏毅教程笔记】Transformer

目录 一、序列到序列&#xff08;Seq2Seq&#xff09;模型 1、Seq2Seq基本原理 2、Seq2Seq模型的应用 3、Seq2Seq模型还能做什么&#xff1f; 二、Encoder 三、Decoder 1、Decoder 的输入与输出 2、Decoder 的结构 3、Non-autoregressive Decoder 四、Encoder 和 De…

C++镌刻数据密码的树之铭文:二叉搜索树

文章目录 1.二叉搜索树的概念2.二叉搜索树的实现2.1 二叉搜索树的结构2.2 二叉搜索树的节点寻找2.2.1 非递归2.2.2 递归 2.3 二叉搜索树的插入2.3.1 非递归2.3.2 递归 2.4 二叉搜索树的删除2.4.1 非递归2.4.2 递归 2.5 二叉搜索树的拷贝 3.二叉树的应用希望读者们多多三连支持小…

系统架构设计师:流水线技术相关知识点、记忆卡片、多同类型练习题、答案与解析

流水线记忆要点‌ ‌公式 总时间 (n k - 1)Δt 吞吐率 TP n / 总时间 → 1/Δt&#xff08;max&#xff09; 加速比 S nk / (n k - 1) | 效率 E n / (n k - 1) 关键概念 周期&#xff1a;最长段Δt 冲突‌&#xff1a; ‌数据冲突&#xff08;RAW&#xff09; → 旁路/…

强制重装及验证onnxruntime-gpu是否正确工作

#工作记录 我们经常会遇到明明安装了onnxruntime-gpu或onnxruntime后&#xff0c;无法正常使用的情况。 一、强制重新安装 onnxruntime-gpu 及其依赖 # 强制重新安装 onnxruntime-gpu 及其依赖 pip install --force-reinstall --no-cache-dir onnxruntime-gpu1.18.0 --extra…

桌面我的电脑图标不见了怎么恢复 恢复方法指南

在Windows操作系统中&#xff0c;“我的电脑”或在较新版本中称为“此电脑”的图标&#xff0c;是访问硬盘驱动器、外部存储设备和系统文件的重要入口。然而&#xff0c;有些用户可能会发现桌面上缺少了这个图标&#xff0c;这可能是由于误操作、系统设置更改或是不小心删除造成…

2025.04.20【Lollipop】| Lollipop图绘制命令简介

Customize markers See the different options allowing to customize the marker on top of the stem. Customize stems See the different options allowing to customize the stems. 文章目录 Customize markersCustomize stems Lollipop图简介R语言中的Lollipop图使用ggp…

docker-compose搭建kafka

1、单节点docker-compose.yml version: 3 services:zookeeper:image: zookeeper:3.8container_name: zookeeperports:- "2181:2181"volumes:- ./data/zookeeper:/dataenvironment:ZOO_MY_ID: 1ZOO_MAX_CLIENT_CNXNS: 100kafka:image: bitnami/kafka:3.7container_na…