The 18th Northeast Collegiate Programming Contest(5/9/13)

心得

赛中ac:5,目前ac:9,题目总数:13

中档可做题还是很多的,可惜遇到了难绷的queueforces,

最后15min才判出来,oi赛制5wa4遗憾离场,赛后把几个题都给调过了,写下题解

题目

J. Breakfast(签到)

签到,不过不是很懂python直接输出39.20为啥wa了

#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<unordered_map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
int n,m;
int main(){sci(n),sci(m);printf("%.2lf\n",0.6*n+m);return 0;
}

A. Paper Watering(枚举)

先特判1,

对于非1的情况,首先原数是可以一直平方不重的,

如果x开根号遇到了下取整,说明sqrt(x)*sqrt(x)也不会和x重,后续平方也都不会重

暴力模拟这个过程,直至出现1为止

#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<unordered_map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
int x,k;
ll ans;
int main(){sci(x),sci(k);if(x==1){puts("1");return 0;}ans=k+1;rep(i,1,k){int v=sqrt(x);if(v==x)break;if(1ll*v*v==x){ans++;}else{if(v==1)ans++;else ans+=1+k-i;}x=v;}ptlle(ans);return 0;
}

D. nIM gAME(博弈)

发现后手可以控制倒数第二张牌取什么,从而使先手必败

//#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<unordered_map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
int t,n;
int main(){sci(t);while(t--){sci(n);puts("lose");}return 0;
}

E. Checksum(枚举)

枚举最终的d有几个1,从而唯一确定后缀补的1的数量和位置,输出即可

//#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<unordered_map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
const int N=2e5+10;
int t,n,k;
char s[N];
int main(){sci(t);while(t--){sci(n);sci(k);scanf("%s",s+1);int c=0;rep(i,1,n)c+=(s[i]=='1');int ans=1e9;rep(j,c,c+k){int v=j&((1<<k)-1);if(__builtin_popcount(v)==j-c){ans=min(ans,v);}}if(ans==1e9)puts("None");else{per(j,k-1,0){printf("%1d",ans>>j&1);}puts("");}}return 0;
}

L. Bracket Generation(计数)

一开始把第二个条件看错了,以为只有内层的选完了外层的才能选,没有这个限制之后就很好做

把左右括号相邻的()括号称为叶子节点(建括号树更直观),其他的称为非叶节点

非叶节点能选当且仅当其包含的最大叶子结点x及序列里位于x左侧的叶子结点都选完之后,才能选

将序列倒着考虑,就是非叶节点的一个插空问题

#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<unordered_map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
const int N=2e6+10,M=2*N,mod=998244353;
char s[N];
int n,cnt,lim[N];
int main(){scanf("%s",s+1);n=strlen(s+1);rep(i,1,n){if(s[i]==')' && s[i-1]=='(')cnt++;if(s[i]==')' && s[i-1]!='('){lim[i]=cnt;}}int now=0,ans=1;per(i,n,1){if(!lim[i])continue;ans=1ll*ans*(cnt-lim[i]+now+1)%mod;now++;}pte(ans);return 0;
}

F. Factor(数论)

先把p、k分别质因数分解,求出对应质因数和出现的幂次

对于p的质因子f,如果f也是k的质因子,显然出现多少次都无所谓,都能除尽,删掉这些f

对于p的独有质因子(也就是没有出现在k中的质因子)p1、p2、…,

记每个的最高幂次是k1、k2、…,将这些最高幂次乘起来得到y,y=p_{1}^{k_{1}}*p_{2}^{k_{2}}*...

枚举y的因子z,也就是这些独有质因子出现了多少,

分母必须恰好能和z兑掉,且剩下的部分由k出现过的质因子构成,

在[1,x/z]内仅由k出现过的质因子构成的数,这个可以先预处理出所有,再二分

因为仅由质因子组成,所以数量没有太多

#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<unordered_map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<ll,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
const int maxp = 1e7+10;
int t, tot, pr[maxp], d[maxp];
ll p,x,k,now,ans;
vector<P>f,f2;
vector<ll>g,all;
map<ll,bool>mp;
void dfs(ll v,int y){all.pb(v);int sz=SZ(g);for(int i=y;i<sz;++i){if(1ll*v<=x/g[i])dfs(v*g[i],i);}
}
void sol(ll v,int y,int z){ans+=upper_bound(all.begin(),all.end(),x/v)-all.begin();int sz=SZ(f2);if(y==sz)return;//printf("v:%lld y:%d z:%d fi:%lld se:%d\n",v,y,z,f2[y].fi,f2[y].se);if(1ll*v<=x/f2[y].fi && z+1<=f2[y].se)sol(v*f2[y].fi,y,z+1);for(int i=y+1;i<sz;++i){if(1ll*v<=x/f2[i].fi)sol(v*f2[i].fi,i,1);}
}
int main(){for(int i = 2; i < maxp; ++i) {if(!d[i])pr[tot++] = d[i] = i;for(int j = 0, z; (z = i * pr[j]) < maxp; ++j) {d[z] = pr[j];if(d[i] == pr[j])break;}}scanf("%lld%lld%lld",&p,&x,&k);rep(i,0,tot-1){if(1ll*pr[i]*pr[i]>p){break;}if(p%pr[i]==0){f.pb(P(pr[i],0));while(p%pr[i]==0)p/=pr[i],f.back().se++;}}if(p>1)f.pb(P(p,1));//for(auto &x:f)printf("(p:%lld,c:%lld)\n",x.fi,x.se);rep(i,0,tot-1){if(1ll*pr[i]*pr[i]>k){break;}if(k%pr[i]==0){g.pb(pr[i]);mp[pr[i]]=true;while(k%pr[i]==0)k/=pr[i];}}if(k>1){g.pb(k);mp[k]=true;}//for(auto &x:g)printf("(g:%lld)\n",x);for(auto &v:f){if(mp.count(v.fi))continue;f2.pb(v);}//for(auto &v:f2)printf("(%lld,%lld) ",v.fi,v.se);puts("");dfs(1,0);sort(all.begin(),all.end());//for(auto &v:all)printf("(v:%lld)\n",v);sol(1,0,0);ptlle(ans);return 0;
}

I. Password(dp)

dp[i]表示[1,i]是合法答案的方案数

转移枚举最后一段的长度x,最后这一段和前面的x-k共同拼成了一个长度为k的排列

但是枚举长度为2的时候,会和长度为1的方案有重复,具体来说

不妨k=5,前5个肯定只能是一个排列,k!种方案,不妨是1 2 3 4 5,对于第6个往后,

对于x=1,1 2 3 4 5 [1],

x=2,1 2 3 4 5 [2 1]和  1 2 3 4 5 [1 2]中只能保留第一个,因为第二个和x=1重复了

x=3,同理,只能保留1 2 3 4 5 [3 1 2]、1 2 3 4 5 [3 2 1]和1 2 3 4 5 [2 3 1]

这个系数是需要递推减掉的,手玩发现:

记长度为x的系数是xs[x],对于长度x来说,若y<x,则需要在总数里减掉xs[y]*fac[x-y],

    rep(i,1,k){
        xs[i]=fac[i];
        per(j,i-1,1){
            xs[i]=(xs[i]+mod-1ll*xs[j]*fac[i-j]%mod)%mod;
        }
        //printf("i:%d xs:%d\n",i,xs[i]);
    }

O(k^2)预处理出系数之后,再O(nk)dp即可

#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<unordered_map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
const int N=1e5+10,K=1e3+10,mod=998244353;
int n,k;
int xs[K],Finv[N],fac[N],inv[N],dp[N];
void init(int n){ //n<Ninv[1]=1;for(int i=2;i<=n;++i)inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;fac[0]=Finv[0]=1;for(int i=1;i<=n;++i)fac[i]=1ll*fac[i-1]*i%mod,Finv[i]=1ll*Finv[i-1]*inv[i]%mod;//Finv[n]=modpow(fac[n],mod-2,mod);//for(int i=n-1;i>=1;--i)Finv[i]=1ll*Finv[i+1]*(i+1)%mod;
}
int main(){sci(n),sci(k);if(n<k){puts("0");return 0;}init(n);dp[k]=fac[k];//printf("n:%d k:%d\n",n,k);rep(i,1,k){xs[i]=fac[i];per(j,i-1,1){xs[i]=(xs[i]+mod-1ll*xs[j]*fac[i-j]%mod)%mod;}//printf("i:%d xs:%d\n",i,xs[i]);}rep(i,k+1,n){for(int j=1;j<=k;++j){dp[i]=(dp[i]+1ll*dp[i-j]*xs[j]%mod)%mod;}// printf("i:%d dp:%d\n",i,dp[i]);//dp[i]=(dp[i-1]*fac[1]+dp[i-2]*(fac[2]-fac[1])+dp[i-3]*(fac[3]-fac[2])+...+dp[i-k]*(fac[k]-fac[k-1]))//dp[i-1]=(dp[i-2]*fac[1]+dp[i-3]*(fac[2]-fac[1])+dp[i-4]*(fac[3]-fac[2])+...+dp[i-k-1]*(fac[k]-fac[k-1]))//dp[i]-dp[i-1]=dp[i-1]-dp[i-2]+dp[i-2]+dp[i-3]+...+dp[i-k]-dp[i-k-1];//dp[i]=(2ll*dp[i-1]%mod-dp[i-k-1]+mod)%mod;}pte(dp[n]);return 0;
}

M. House(计算几何)

感觉计算几何的题平时不怎么写所以不太会写,

但实际上出题人应该平时也不怎么写,出的题还是挺基础的

先求出矩形,O(n^2logn)枚举点对,将点对放入(线段中点,线段长度)的map内,

矩形的对角线互相平分,所以共用中点且长度相等的两条对角线能构成一个矩形

两两枚举矩形,对于矩形四条边,任意两条邻边x、y检查一下,

统计房子在x外侧的第五个点的个数,这个需要叉积判断不在矩形内部

此时需要统计向量i->j左侧/右侧有多少点,O(n^3)预处理一下即可

#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<unordered_map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<ll,ll> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)const int N=305,M=N*N;
using i64 = long long;
using T = long long;int n,c;
ll res;struct Point {T x;T y;Point(T x = 0, T y = 0) : x(x), y(y) {}Point &operator+=(const Point &p) {x += p.x, y += p.y;return *this;}Point &operator-=(const Point &p) {x -= p.x, y -= p.y;return *this;}Point &operator*=(const T &v) {x *= v, y *= v;return *this;}friend Point operator-(const Point &p) {return Point(-p.x, -p.y);}friend Point operator+(Point lhs, const Point &rhs) {return lhs += rhs;}friend Point operator-(Point lhs, const Point &rhs) {return lhs -= rhs;}friend Point operator*(Point lhs, const T &rhs) {return lhs *= rhs;}
}e[N];T dot(const Point &a, const Point &b) {return a.x * b.x + a.y * b.y;
}T cross(const Point &a, const Point &b) {return a.x * b.y - a.y * b.x;
}map<array<ll,3>,vector<P>>mp;
vector<P>ans[M];
int pos[N][N],neg[N][N];
void ck(int a,int b,int c){//printf("a:%d b:%d c:%d res1:%lld\n",a,b,c,res);if(cross(e[c]-e[b],e[a]-e[b])<0)res+=pos[b][a];else res+=neg[b][a];//printf("a:%d b:%d c:%d res2:%lld\n",a,b,c,res);
}int main(){sci(n);rep(i,1,n){scanf("%lld%lld",&e[i].x,&e[i].y);}rep(i,1,n){rep(j,1,n){if(i==j)continue;Point c=e[i]-e[j];ll z=dot(c,c);//printf("i:%d j:%d x:%lld y:%lld z:%lld\n",i,j,e[i].x+e[j].x,e[i].y+e[j].y,z);if(i<j)mp[{e[i].x+e[j].x,e[i].y+e[j].y,z}].pb(P(i,j));rep(k,1,n){if(i==k||j==k)continue;Point ki=e[k]-e[i],kj=e[k]-e[j];ll x=dot(ki,ki),y=dot(kj,kj);if(x==y){ll w=cross(e[k]-e[i],e[j]-e[i]);if(w>0){//printf("i:%d j:%d neg:%d\n",i,j,neg[i][j]);pos[i][j]++;//i->j的逆时针方向 样例房子形状}else if(w<0){neg[i][j]++;//printf("i:%d j:%d neg:%d\n",i,j,pos[i][j]);}}}}}for(auto &x:mp){ans[++c]=x.se;}// rep(i,1,n){//     rep(j,1,n){//         if(i==j)continue;//         printf("i:%d j:%d neg:%d pos:%d\n",i,j,neg[i][j],pos[i][j]);//     }// }rep(i,1,c){int sz=SZ(ans[i]);rep(j,0,sz-1){rep(k,j+1,sz-1){int a=ans[i][j].fi,d=ans[i][j].se,b=ans[i][k].fi,c=ans[i][k].se;//printf("a:%d b:%d c:%d d:%d res:%lld\n",a,b,c,d,res);ck(b,a,c);ck(a,c,d);ck(c,d,b);ck(d,b,a);//printf("a:%d b:%d c:%d d:%d res2:%lld\n",a,b,c,d,res);}}}ptlle(res);return 0;
}
/*
5
4 2
0 2
2 5
4 0
0 0
*/

G. Diamond(分块)

想到分块之后就很好做了,虽然空间稍微用short卡了一下

先把n弥补成块的倍数,方便后面判断,后面的都用0补足即可,

对于第i个块,预处理出块内任意两种数(x,y)的逆序对个数,

计在这个块内x、y出现的第一个位置big[i][x][y]

所以,也需要记录每种数x在第i个块内出现的第一个位置pos[x][i]是多少,

这个位置可以对块长取模,就是一个最大为块长M(300多)的数,short足矣

然后就是在线查询,

对于长度不超过3*M的块,懒得分类讨论有一个块还是两个了,直接暴力,常数略大一点而已

超过3*M的,一定中间有完整块,然后最多两个半块,

对于每个完整块,先加上完整块的答案;对于半块,暴力统计答案

再从前往后、从后往前遍历块,分别统计块间能产生的答案,求和即可

#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<unordered_map>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<ll,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
using namespace std;
const int N=1e5+1e4+10,M=340;
short pos[N][M];
int big[M][M][M];
int n,T,a[N],l,r,p,q,sq,sz[M][M];
int main(){sci(n),sci(T);sq=sqrt(n);//printf("sq:%d\n",sq);memset(pos,-1,sizeof pos);rep(i,0,n-1){sci(a[i]);int x=i/sq;if(pos[a[i]][x]==-1){pos[a[i]][x]=i%sq;//printf("i:%d ai:%d x:%d pos:%d\n",i,a[i],x,pos[a[i]][x]);}}while(n%sq)n++;rep(i,0,(n-1)/sq){int l=i*sq,r=(i+1)*sq-1;//printf("i:%d l:%d r:%d\n",i,l,r);rep(j,l,r){sz[i][pos[a[j]][i]]++;rep(k,j+1,r){if(a[k] && a[j]>a[k]){int p1=pos[a[j]][i],p2=pos[a[k]][i];big[i][p1][p2]++;//printf("i:%d aj:%d ak:%d p1:%d p2:%d big:%d\n",i,a[j],a[k],p1,p2,big[i][p1][p2]);}}}}while(T--){sci(l),sci(r),sci(p),sci(q);l--;r--;if(p<q)swap(p,q);ll ans=0,cp=0,cq=0;if(r-l+1<=3*sq){rep(i,l,r){if(a[i]==p)cp++;else if(a[i]==q)ans+=cp;}ptlle(ans);continue;}int x=l/sq*sq+sq-1,y=r/sq*sq;rep(i,l,x){if(a[i]==p)cp++;else if(a[i]==q)ans+=cp;}per(i,r,y){if(a[i]==q)cq++;else if(a[i]==p)ans+=cq;}rep(i,(x+1)/sq,(y-1)/sq){int p1=pos[p][i],p2=pos[q][i],v1=0,v2=0;if(~p1)v1=sz[i][p1];if(~p2)v2=sz[i][p2];if(~p1 && ~p2)ans+=big[i][p1][p2];ans+=1ll*cp*v2;cp+=v1;}ans+=1ll*cp*cq;ptlle(ans);}return 0;
}

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

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

相关文章

GPT大模型微调-提高垂直领域回答质量

微调一个大模型并测试微调后的效果是一个很好的学习实践。下面是一个逐步指导,帮助你使用一个较小的预训练大模型进行微调,并测试其效果。我们将使用 Hugging Face 的 Transformers 库和一个较小的预训练模型,如 DistilBERT。这个库非常流行且易于使用。 实现步骤 步骤 1:…

Rust-07-结构体

结构体 和元组一样&#xff0c;结构体的每一部分可以是不同类型。但不同于元组&#xff0c;结构体需要命名各部分数据以便能清楚的表明其值的意义。由于有了这些名字&#xff0c;结构体比元组更灵活&#xff1a;不需要依赖顺序来指定或访问实例中的值。可以当作是java对象。使…

Macbook M芯片JDK的安装

Macbook M芯片JDK的安装 下载 搜索zulu&#xff1b; 进入这个网址 https://www.azul.com/downloads/#zulu 进入页面后向下滑动 选择对应选项 然后点击Download进行下载。 选择.dmg格式的安装包&#xff0c;点击。 安装 下载完成后&#xff0c;到下载目录&#xff0c;双击…

窗帘怎么选好看不踩坑

雅静说窗帘好看不踩坑,五点全搞定      买窗帘时,别一开口就问多少钱,啥材质,环保不      会显得很小白,容易被坑,      1,大部分窗帘都是涤纶的, 只不过做出来的质感不一样      如果是原木风可以选棉麻质感的,奶油风和现代简约      可以选雪尼尔质感的,…

MSPM0l1306——配置滴答定时器

我们配置好了滴答定时器之后&#xff0c;还要手动编写滴答定时器的中断服务函数&#xff0c;因为我们开启的滴答定时器的中断&#xff0c;当滴答定时器的计数值从我们设置的值减到0时&#xff0c;就会触发一次中断&#xff0c;触发中断就会执行中断服务函数。各个中断的中断服务…

Flutter 中的 DropdownButtonHideUnderline 小部件:全面指南

Flutter 中的 DropdownButtonHideUnderline 小部件&#xff1a;全面指南 Flutter 是一个流行的开源移动 UI 框架&#xff0c;由 Google 开发&#xff0c;允许开发者使用单一的代码库构建高质量的 iOS 和 Android 应用。Flutter 提供了丰富的组件&#xff0c;其中 DropdownButt…

【Spring Boot】异常处理

异常处理 1.认识异常处理1.1 异常处理的必要性1.2 异常的分类1.3 如何处理异常1.3.1 捕获异常1.3.2 抛出异常1.3.4 自定义异常 1.4 Spring Boot 默认的异常处理 2.使用控制器通知3.自定义错误处理控制器3.1 自定义一个错误的处理控制器3.2 自定义业务异常类3.2.1 自定义异常类3…

树莓派 5 AI 套件(Hailo-8L)使用教程

系列文章目录 前言 The Raspberry Pi AI Kit Raspberry Pi AI 套件将 Raspberry Pi M.2 HAT 与 Hailo AI 加速模块捆绑在一起&#xff0c;供 Raspberry Pi 5 使用。套件包含以下内容&#xff1a; 包含神经处理单元&#xff08;NPU&#xff09;的 Hailo AI 模块Raspberry Pi M.…

STM32 proteus + STM32Cubemx仿真教程(第二课按键教程)

文章目录 前言一、STM32按键的原理二、STM32Cubemx创建工程三、proteus仿真电路图四、程序代码编写4.1函数介绍4.2使用按键点亮LED灯 总结 前言 本篇文章开始带大家学习如何使用proteus和STM32Cubemx来完成STM32的学习&#xff0c;第二节课我们先来学习按键的用法。 proteus使…

[docker] docker-compose-mysql.yml

引言&#xff1a;作为一名专业的资深开发&#xff0c;本地一定拥有了不少开源项目以供学习&#xff0c;每次都要去启动 mysql 数据库跟 redis 服务器&#xff0c;这种操作1.挺烦的&#xff0c;挺费时间&#xff0c;每次都要启动命令来一次&#xff1b;2.占用自己电脑的资源&…

五款软件推荐:U盘数据不小心删除了?帮你快速找回!

U盘数据不小心删除了怎么恢复&#xff1f;U盘是一种便携式存储设备&#xff0c;因其小巧轻便而广受欢迎。但是&#xff0c;U盘也常常会遇到数据丢失的问题。当U盘数据丢失时&#xff0c;需要找到一款可靠的数据恢复软件来恢复数据。 接下来为大家推荐5款好用的免费U盘数据恢复软…

Python 使用scrapy框架

1、安装scrapy 2、使用scrapy创建项目,在终端命令行 执行如下命令&#xff0c;会创建一个myproject项目 scrapy startproject myproject 3、创建完成后&#xff0c;目录结构如下 4、cd myproject进入项目 ,执行scrapy genspider weather ******&#xff0c;会在spiders下创建…

Incredibuild for Mac 来了!

Mac 开发者在寻找适合自己需求的工具时可能会遇到一些困难&#xff0c;因为 Mac 操作系统相对封闭&#xff0c;不像其他系统那样开放和灵活。尽管如此&#xff0c;Mac 开发者在开发应用程序时的需求&#xff08;比如功能、效率等&#xff09;和使用其他操作系统的开发者是类似的…

Linux中安装Docker,并使用Docker安装MySQL和Redis

1、安装docker 1卸载系统之前的docker yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine2、安装Docker-CE #安装必须的依赖 sudo yum install -y yum-utils \device-map…

LINUX----进程替换,exec族函数

execl族函数的作用 exel族函数用于调用一个已经存在的可执行程序,将该程序的运行需要的代码区和数据区的数据覆盖原进程,这样就可以实现在一个进程中调度另一个进程. 简单实现一个小功能来看一看 mytest.c #include <stdio.h> #include <unistd.h>int main(){print…

开源VS闭源

当我们谈论大模型时&#xff0c;往往会涉及到开源和闭源两种不同的模型类型&#xff0c;开源和闭源的主要区别在于源代码的访问权限和修改能力。开源意味着软件的源代码对公众开放&#xff0c;任何人都可以查看、修改和分发源代码&#xff0c;这促进了技术的透明性、合作和创新…

抽象的java入门1.3.0

前言&#xff1a; 在1.2.0版本中我们介绍了public class hello {}并从中提取出两个新概 修饰符和作用域 public class hello {public static void main(String[] args) {System.out.println("Hello World");} } 正片&#xff1a; 这一期把剩余的内容刨析出来 pub…

【Redis学习笔记04】Jedis客户端(上)

Java客户端操作Redis Java生态丰富&#xff0c;自定义的客户端非常多&#xff0c;常见的有Jedis、Lettuce、以及Spring整合后的RedisTemplate&#xff0c;但是对于初学者而言&#xff0c;从Jedis开始入门学习是非常容易上手的&#xff0c;因为Jedis中的API与原生Redis命令高度…

Android Bugreport分析工具:ChkBugReport教程

安装&#xff1a; 如果下载地址过期请看原仓库地址的wiki&#xff0c;或许会有更新&#xff1a;https://github.com/sonyxperiadev/ChkBugReport/wiki 提前下载好如下文件&#xff1a; ​​​​​​http://sonyxperiadev.github.io/ChkBugReport/download/chkbugreport (Lau…

Python中的上下文管理器(contextlib)模块

Python中的contextlib模块提供了一些用于创建和管理上下文管理器&#xff08;context managers&#xff09;的工具。上下文管理器是实现了__enter__()和__exit__()方法的对象&#xff0c;它们通常用于确保在代码块执行前后执行某些操作&#xff0c;比如资源获取与释放、设置和重…