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的因子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;
}
相关文章:
The 18th Northeast Collegiate Programming Contest(5/9/13)
心得 赛中ac:5,目前ac:9,题目总数:13 中档可做题还是很多的,可惜遇到了难绷的queueforces, 最后15min才判出来,oi赛制5wa4遗憾离场,赛后把几个题都给调过了࿰…...
Vue前端在线预览文件插件
Vue前端在线预览文件插件 一、使用场景 1.1.像文档资料等,只想让他人在线预览,但不能下载。此等场景需求可以用到此插件。 二、此文档介绍两种插件 1.view.xdocin插件 (上线后免费几天,然后收费,添加作者后,可以延…...
【ai】Audio2Face
Audio2Face 简介 Audio2Face是英伟达Omniverse平台的一部分,它使用先进的AI技术来生成基于音频输入的逼真面部动画。这个技术主要利用深度学习模型来解析人声,进而驱动一个三维模型的面部表情。下面是Audio2Face工作流程的详细说明: 预备阶段 在使用Audio2Face之前,需要准…...
2024.6.9 一
装饰器(Decorators) 装饰器是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短,我们在用到装饰器时,常用到一个的符号,这个叫做语法糖,在函数定义前加上decorator_name, 那么后面的函数执行…...
地图之战争迷雾/地图算法/自动导航(一)
战争迷雾 TiledMap 创建黑色覆盖块,然后使用碰撞组件,控制黑色块的显示和隐藏 地图算法 在有些游戏中,地图需要随机生成,比如游戏中的迷宫等,这就需要地图生成的算法;在角色扮演类游戏中,角色…...
【wiki知识库】06.文档管理页面的添加--前端Vue部分
📝个人主页:哈__ 期待您的关注 目录 一、🔥今日目标 二、🐻前端Vue模块的改造 BUG修改 1.wangeditor无法展示问题 2.弹窗无法正常关闭问题 2.1 添加admin-doc.vue 2.1.1 点击admin-ebook中的路由跳转到admin-doc 2.2.2 进入…...
新电脑必装的7款软件,缺一不可
如果你买了新电脑或者是重装了新系统,那么这7款软件你一定要安装。 1、SpaceSniffer 如果你的C盘经常爆红,但是不知道是什么原因,那么你应该需要SpaceSniffer这款软件,它可以把你C盘中文件的空间占用情况,以大小方框…...
程序员学习Processing和TouchDesigner视觉编程相关工具
Proessing Processing 是一种用于视觉艺术和创意编程的开发环境和编程语言。它最初是为了帮助非专业程序员学习编程,特别是那些对于创意编程和视觉表达感兴趣的人。Processing 提供了简单易用的 API,使得绘制图形、创建动画和交互式应用变得相对容易。 …...
gitlabcicd-k8s部署gitlab
一.安装准备环境 存储使用nfs挂载持久化 k8s环境 helm安装 建议helm 3 二.部署gitlab-deploy.yaml nfs的ip是192.168.110.190 挂载目录是/data/data 注意所需要的目录需要创建:/data/data/gitlab/config ,/data/data/gitlab/logs ,/dat…...
浅谈JDBC
文章目录 一、什么是 JDBC?二、JDBC 操作流程三、JDBC代码例子 一、什么是 JDBC? JDBC是一种可用于执行SQL语句的JAVA API,是链接数据库和JAVA应用程序的纽带。JDBC一般需要进行3个步骤:与数据库建立一个链接、向数据库发送SQL语…...
【数据结构初阶】--- 顺序表
顺序表,好像学C语言时从来没听过,实际上就是给数组穿了层衣服,本质是一模一样的。 这里的顺序表实际是定义了一个结构体,设计各种函数来实现它的功能,比如说数组中的增删改查插入,这些基本操作其实平时就会…...
一个完整的java项目通常包含哪些层次(很全面)
1.View层(视图层) 职责:负责数据的展示和用户交互。在Web应用中,View层通常与HTML、CSS和JavaScript等技术相关。 技术实现:在Spring MVC中,View层可以使用JSP、Thymeleaf、FreeMarker等模板引擎来实现。…...
设置电脑定时关机
1.使用快捷键winR 打开运行界面 2.输入cmd ,点击确认,打开命令行窗口,输入 shutdown -s -t 100,回车执行命令,自动关机设置成功 shutdown: 这是主命令,用于执行关闭或重启操作。-s: 这个参数用于指定执行关…...
Java 编译报错:找不到符号? 手把手教你排查解决!
Java 编译报错:找不到符号? 手把手教你排查解决! 在 Java 开发过程中,我们经常会遇到编译器抛出 "找不到符号" 错误。这个错误提示意味着编译器无法在它所理解的范围内找到你所引用的类、变量或方法。这篇文章将带你一步…...
Gitte的使用(Windows/Linux)
Gitte的使用(Windows/Linux) 一、Windows上使用Gitte1.下载程序2.在Gitte上创建远程仓库3.连接远程仓库4.推送文件到远程仓库 二、Linux上使用Gitte1.第一次从仓库上传1.1生成公钥1.2配置SSH公钥1.3新建一个仓库1.4配置用户名和邮箱在Linux中1.5创建仓库…...
c++之旅第十弹——IO流
大家好啊,这里是c之旅第十弹,跟随我的步伐来开始这一篇的学习吧! 如果有知识性错误,欢迎各位指正!!一起加油!! 创作不易,希望大家多多支持哦! 一.流的概念&…...
量化交易:Miniqmt获取可转债数据和交易python代码
哈喽,大家好,我是木头左! 低风险资产除了国债外,还有可转债,兼容有高收益的股性和低风险的债性,号称“下有保底,上不封顶”。 🔍 可转债:金融市场的双面娇娃 可转债&am…...
测试开发之自动化篇 —— 使用Selenium IDE录制脚本!
今天,我们开始介绍基于开源Selenium工具的Web网站自动化测试。 Selenium包含了3大组件,分别为:1. Selenium IDE 基于Chrome和Firefox扩展的集成开发环境,可以录制、回放和导出不同语言的测试脚本。 2. WebDriver 包括一组为不同…...
Django 外键关联数据
在设计数据库的时候,是得需要通过外键的形式将各个表进行连接。 原先的表是这样的 要想更改成这样: 下面是操作步骤: 有两张表是关联的 # 在 models.py 里创建class Department(models.Model):"""部门表""&quo…...
开源与新质生产力
在这个信息技术迅猛发展的时代,全球范围内的产业都在经历着深刻的变革。在这样的背景下,“新质生产力”的概念引起了广泛的讨论。无论是已经成为或正努力转型成为新质生产力的企业,都在寻求新的增长动力和竞争优势。作为一名长期从事开源领域…...
如何将 Windows图片查看器的背景颜色改成浅色(灰白色)?
现在大家基本都在使用Win10系统,我们在双击查看图片时,系统默认使用系统自带的图片(照片)查看器去打开图片。图片查看器的背景色默认是黑色的,如下所示:(因为大家可能会遇到同样的问题ÿ…...
k8s-pod参数详解
目录 概述创建Pod编写一个简单的Pod添加常用参数为Pod的容器分配资源网络相关Pod健康检查启动探针存活探针就绪探针 作用整个Pod参数配置创建docker-registry 卷挂载 结束 概述 k8s中的pod参数详解。官方文档 版本 k8s 1.27.x 、busybox:stable-musl、nginx:stable-alpine3…...
一些计算机网络面试题
TCP建立连接和关闭连接的流程?每个流程的环节? TCP是在传输层的协议,建立的是可靠传输 TCP在传输数据前建立连接是采用三次握手,关闭连接是四次挥手 三次握手:因为目前网络通讯是全双工的,那我假设浏览器…...
transformer - 注意力机制
Transformer 的注意力机制 Transformer 是一种用于自然语言处理任务的模型架构,依赖于注意力机制来实现高效的序列建模。注意力机制允许模型在处理一个位置的表示时,考虑输入序列中所有其他位置的信息,而不仅仅是前面的几个位置。这种机制能…...
三端植物大战僵尸杂交版来了
Hi,好久不见,最近植物大战僵尸杂交版蛮火的 那今天苏音整理给大家三端的植物大战僵尸杂交版包括【苹果端、电脑端、安卓端】 想要下载的直接划到最下方即可下载。 植物大战僵尸,作为一款古老的单机游戏,近期随着B站一位UP主潜艇…...
np.hstack()和np.vstack()函数解释
np.hstack()和np.vstack()函数解释 文章目录 1,np.hstack()1.1,代码1.2,结果 2,np.vstack()2.1,代码2.2,结果 3,np.hstack()和np.vstack()3.1,代码3.2,结果 1,…...
【Linux】进程5——进程优先级
1.进程优先级 1.1.什么是进程优先级 cpu资源分配的先后顺序,就是指进程的优先权(priority)。优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。还可以把进程运行到指定的CPU上&#x…...
CNN简介与实现
CNN简介与实现 导语整体结构卷积层卷积填充步幅三维卷积立体化批处理 实现 池化层特点实现 CNN实现可视化总结参考文献 导语 CNN全称卷积神经网络,可谓声名远扬,被用于生活中的各个领域,也是最好理解的神经网络结构之一。 整体结构 相较于…...
【AI大模型】Transformers大模型库(五):AutoModel、Model Head及查看模型结构
目录 一、引言 二、自动模型类(AutoModel) 2.1 概述 2.2 Model Head(模型头) 2.3 代码示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库,为huggingface上数以万计的预…...
Hadoop yixing(移行),新增表字段,删除表字段,修改存储格式
Hadoop yixing(移行),新增表字段,删除表字段,修改存储格式 一、hadoop中修改存储格式,比如从 textfile 转化为 orc 格式,表中的数据的组织形式要重新改变,就要将重新创建新格式的表将原来的数据按照新的格…...
电子图书网站开发的目的/网上电商平台开发
Stata版本目前已经更新到17了,外观也精美了许多,很增加了许多新的功能,如制作表格导出,双重差分法。自从更新到了16版本后自带了lasso回归功能,到了17以后功能更加强大了,多了可使用 “贝叶斯信息准则”&am…...
wordpress伤感主页/竞价排名的优缺点
装配式项目普遍采用的预制钢筋混凝土框架柱,通常是通过预埋于柱底内的半灌浆套筒注入灌浆料拌合物,通过拌合物硬化形成整体并实现传力,使得上下层主筋对接连接。因此,预制柱的灌浆施工就成了一项技术难点。在建设过程中࿰…...
WordPress美女/seo任务
数据模型基本要讲三大部分 model proxy store 1. 普通Molde的创建 数据模型对真实世界中对事物在系统中的反应 Extjs4.0中的model相当于DB中的table,或java中的class //我们来利用Ext.defind来创建model类 //相当于是DB中的table,比如tab…...
纪念平台网站建设/手机搭建网站
1.animated bool 进行设置当状态栏的状态发生变化的时候是否需要加入动画。当前该动画支持backgroundColor,barStyle和hidden属性2.hidden bool 进行设置状态栏是否隐藏3.backgroundColor color类型,仅支持Android设备,设置状态栏的背景颜色4.tran…...
网站制作业务/搜索引擎优化英文简称
近日一则《阿里P7员工得白血病身故,生前租了自如甲醛房》的文章在网络上疯传,自如继“涨价门”后再次被推上风口浪尖。对于出租房屋行业,甲醛一词可谓是病危通知书,一旦出现,客户和公司间的信任也会瞬时瓦解。此次“甲…...
惠州做百度网站多少/营销软件
1、 datatype: "local",属性加入这个 2、 dataValue就是json对象 for (var i 0; i < dataValue.length; i) { jQuery("#list2").jqGrid(addRowData, i 1, dataValue[i]);} 注意:给data赋值的时候一样要加上 datatype: "local"...