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

2023大联盟6比赛总结

比赛链接

反思

A

为什么打表就我看不出规律!!!
定式思维太严重了T_T

B

纯智障分块题,不知道为什么 B = 100 B=100 B=100 比理论最优 B = 300 B=300 B=300 更优(快了 3 倍),看来分块还是要学习一些卡常技巧的

C

菜死了,不会

D

菜死了,不会

题解

A

神奇的式子,考虑打表
打表!!!
可以发现一下两个规律:

  1. 只有当 x + y x+y x+y 2 2 2 的次幂时 f ( x , y ) f(x,y) f(x,y) 才可能不为 0 0 0
  2. f ( x , y ) = f ( x d , y d ) f(x,y)=f(\frac{x}{d},\frac{y}{d}) f(x,y)=f(dx,dy),其中 d = gcd ⁡ ( x , y ) d=\gcd(x,y) d=gcd(x,y)
    且若 x + y = 2 k , x , y x+y=2^k,x,y x+y=2k,x,y 都为奇数且 ( x , y ) = 1 (x,y)=1 (x,y)=1 时, f ( x , y ) = k f(x,y)=k f(x,y)=k

考虑证明:
考虑 x + y x+y x+y 必须为偶数因为一直循环下去 x + y x+y x+y 的值不变
f ( x , y ) = f ( x d , y d ) f(x,y)=f(\frac{x}{d},\frac{y}{d}) f(x,y)=f(dx,dy) 是易得的
我们只需要考虑 x , y x,y x,y 都为奇数的情况,因为 x , y x,y x,y 为偶数时 2 ∣ gcd ⁡ ( x , y ) 2|\gcd(x,y) 2∣gcd(x,y)
x > y x>y x>y,则 f ( x , y ) = f ( 2 y , x − y ) + 1 f(x,y)=f(2y,x-y)+1 f(x,y)=f(2y,xy)+1
因为 2 y , x − y 2y,x-y 2y,xy 都为偶数,所以 f ( x , y ) = f ( y , x − y 2 ) + 1 f(x,y)=f(y,\frac{x-y}{2})+1 f(x,y)=f(y,2xy)+1
这样 x ′ + y ′ x'+y' x+y 的值就除了 2 2 2,且因为 gcd ⁡ ( x , y ) = 1 \gcd(x,y)=1 gcd(x,y)=1,所以 gcd ⁡ ( y , x − y 2 ) = 1 \gcd(y,\frac{x-y}{2})=1 gcd(y,2xy)=1
所以 x + y x+y x+y 只有当是 2 2 2 的次幂时, x ′ = y ′ x'=y' x=y,且操作次数为 l o g 2 ( x + y ) log_2(x+y) log2(x+y)

我们发现这有值的点对个数是 O ( n l o g n ) O(nlogn) O(nlogn) 级别的
所以我们可以把所有有值的点对找出来,然后询问就相当于二维数点了
离线询问 + 扫描线 + 树状数组即可
时间复杂度 O ( n l o g 2 n ) O(nlog^2n) O(nlog2n)

#include <bits/stdc++.h>
#define pb push_back
#define lowbit(x) x&-x
using namespace std;
typedef long long LL;
const int N=300100,Q=1000100;
struct Node{ int p1,p2,val;};
struct Node2{ int l,r,id,coef;};
int n,p[N],b[N];
LL tr[N],ans[Q];
Node used[N*40];
vector<Node2> query[N];
inline int read(){int FF=0,RR=1;char ch=getchar();for(;!isdigit(ch);ch=getchar()) if(ch=='-') RR=-1;for(;isdigit(ch);ch=getchar()) FF=(FF<<1)+(FF<<3)+ch-48;return FF*RR;
}
bool cmp(const Node &x,const Node &y){ return x.p1<y.p1;}
void add(int x,int v){ for(;x<=n;x+=lowbit(x)) tr[x]+=v;}
LL ask(int x){if(x<=0) return 0;LL res=0;for(;x;x-=lowbit(x)) res+=tr[x];return res;
}
int main(){freopen("perm.in","r",stdin);freopen("perm.out","w",stdout);n=read();for(int i=1;i<=n;i++) p[i]=read(),b[p[i]]=i;int cnt=0;for(int pw=4,mi=2;pw<=n<<1;pw<<=1,mi++)for(int x=1;x<=pw;x+=2){int y=pw-x;for(int k=1;k*max(x,y)<=n;k++) used[++cnt]={b[x*k],b[y*k],mi};}int q=read();for(int i=1;i<=q;i++){int l=read(),r=read();query[l-1].pb({l,r,i,-1}),query[r].pb({l,r,i,1});}sort(used+1,used+cnt+1,cmp);for(int i=1,j=0;i<=n;i++){while(j<cnt&&used[j+1].p1<=i){j++;assert(used[j].p2>=1&&used[j].p2<=n);add(used[j].p2,used[j].val);}for(Node2 t:query[i]) ans[t.id]+=t.coef*(ask(t.r)-ask(t.l-1));}for(int i=1;i<=q;i++) printf("%lld\n",ans[i]/2);fprintf(stderr,"%d ms\n",int(1e3*clock()/CLOCKS_PER_SEC));return 0;
}

B

不说了,思想比较简单,就是分块 + 块内用优先队列维护
时间复杂度 O ( n m l o g n ) O(n\sqrt mlogn) O(nm logn) m m m 为修改操作个数
块长设为 100 100 100 实测最优

#pragma GCC optimize(3)
#include <bits/stdc++.h>
using namespace std;
const int N=100100,MAXB=1010,P=1e9+7;
typedef pair<int,int> pii;
int n,m,a[N],pref[N],pos[N];
int B,sum[MAXB],tot[MAXB],tag[MAXB],_l[MAXB],_r[MAXB];
priority_queue<pii,vector<pii>,greater<pii> > pq[MAXB];
inline int read(){int FF=0,RR=1;char ch=getchar();for(;!isdigit(ch);ch=getchar()) if(ch=='-') RR=-1;for(;isdigit(ch);ch=getchar()) FF=(FF<<1)+(FF<<3)+ch-48;return FF*RR;
}
inline int calc(int x){int cur=sqrt(x);return (pref[cur-1]+1ll*(x-cur*cur+1)*cur)%P;
}
inline void inc(int &x,int y){ x+=y;if(x>=P) x-=P;}
void rebuild(int Block){for(int i=_l[Block];i<=_r[Block];i++) a[i]+=tag[Block];tag[Block]=tot[Block]=sum[Block]=0;while(!pq[Block].empty()) pq[Block].pop();for(int i=_l[Block];i<=_r[Block];i++){int sq=sqrt(a[i]);inc(tot[Block],calc(a[i])),inc(sum[Block],sq);pq[Block].emplace(make_pair((sq+1)*(sq+1)-a[i],i));}assert(tot[Block]>=0);
}
void modify(int l,int r){if(pos[l]==pos[r]){for(int i=l;i<=r;i++) a[i]++;rebuild(pos[l]);return;}else{int i=l,j=r;while(pos[i]==pos[l]) a[i]++,i++;while(pos[j]==pos[r]) a[j]++,j--;rebuild(pos[l]),rebuild(pos[r]);for(int k=pos[i];k<=pos[j];k++){tag[k]++;pii t=pq[k].top();while(t.first<=tag[k]){pq[k].pop();inc(sum[k],1);int v=sqrt(a[t.second]+tag[k]);assert(v*v==a[t.second]+tag[k]);pq[k].push(make_pair((v+1)*(v+1)-a[t.second],t.second));t=pq[k].top();}inc(tot[k],sum[k]);}}
}
int query(int l,int r){int ans=0;if(pos[l]==pos[r]){rebuild(pos[l]);for(int i=l;i<=r;i++) inc(ans,calc(a[i]));}else{rebuild(pos[l]),rebuild(pos[r]);int i=l,j=r;while(pos[i]==pos[l]) inc(ans,calc(a[i])),i++;while(pos[j]==pos[r]) inc(ans,calc(a[j])),j--;for(int k=pos[i];k<=pos[j];k++) inc(ans,tot[k]);}return ans;
}
int main(){freopen("play.in","r",stdin);freopen("play.out","w",stdout);for(int i=1;i<=40000;i++) pref[i]=(pref[i-1]+((1ll*(i+1)*(i+1)-1ll*i*i)%P+P)*i)%P;for(int i=1;i<=40000;i++) assert(pref[i]>=0);n=read(),m=read();for(int i=1;i<=n;i++) a[i]=read();B=100;for(int i=1;i<=n;i++) pos[i]=(i-1)/B+1;for(int i=1;i<=pos[n];i++) _l[i]=_r[i-1]+1,_r[i]=i*B;_r[pos[n]]=n;for(int i=1;i<=pos[n];i++) rebuild(i);for(int i=1;i<=m;i++){int op=read(),l=read(),r=read();if(op==1) modify(l,r);else printf("%d\n",query(l,r));}fprintf(stderr,"%d ms\n",int(1e3*clock()/CLOCKS_PER_SEC));return 0;
}

C

感觉是到有点 nb 的题
不考虑翻转,如何求 l i s lis lis
考虑枚举分界点 i i i,那么答案 = max ⁡ { i 前面 0 的个数 + i 后面 1 的个数 } =\max\{i前面0的个数+i后面1的个数\} =max{i前面0的个数+i后面1的个数}
这等价于 s 1 + max ⁡ i = 1 n s u m i s1+\max\limits_{i=1}^{n} sum_i s1+i=1maxnsumi,其中 s 1 s1 s1 为序列中 1 1 1 的个数, s u m i sum_i sumi 为把 0 0 0 的权值设为 1 1 1 1 1 1 的权值设为 − 1 -1 1 的前缀和

考虑翻转操作
我们可以把这个问题等价地看成选出一段前缀和与 m m m 段不相交子区间(不能与前缀相交)的和的最大值
这一步感觉很难想,也很难理解
具体我也不会证,只能自己画图感性理解

然后就是经典的反悔贪心操作了,找最大的区间,然后区间取反,用线段树维护即可
时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn)

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=200100;
int n,val[N],s[N];
inline int read(){int FF=0,RR=1;char ch=getchar();for(;!isdigit(ch);ch=getchar()) if(ch=='-') RR=-1;for(;isdigit(ch);ch=getchar()) FF=(FF<<1)+(FF<<3)+ch-48;return FF*RR;
}
struct Node{int l,r,sum;int lmx,rmx,mx,Lp,Rp,LLp,RRp;int lmn,rmn,mn,Lq,Rq,LLq,RRq;bool tag;
}seg[N<<2];
Node operator +(const Node &lc,const Node rc){Node ret;ret.l=lc.l,ret.r=rc.r,ret.tag=0;ret.sum=lc.sum+rc.sum;ret.lmx=lc.lmx,ret.LLp=lc.LLp;if(lc.sum+rc.lmx>ret.lmx) ret.lmx=lc.sum+rc.lmx,ret.LLp=rc.LLp;ret.rmx=rc.rmx,ret.RRp=rc.RRp;if(rc.sum+lc.rmx>ret.rmx) ret.rmx=rc.sum+lc.rmx,ret.RRp=lc.RRp;ret.mx=lc.rmx+rc.lmx,ret.Lp=lc.RRp,ret.Rp=rc.LLp;if(lc.mx>ret.mx) ret.mx=lc.mx,ret.Lp=lc.Lp,ret.Rp=lc.Rp;if(rc.mx>ret.mx) ret.mx=rc.mx,ret.Lp=rc.Lp,ret.Rp=rc.Rp;ret.lmn=lc.lmn,ret.LLq=lc.LLq;if(lc.sum+rc.lmn<ret.lmn) ret.lmn=lc.sum+rc.lmn,ret.LLq=rc.LLq;ret.rmn=rc.rmn,ret.RRq=rc.RRq;if(rc.sum+lc.rmn<ret.rmn) ret.rmn=rc.sum+lc.rmn,ret.RRq=lc.RRq;ret.mn=lc.rmn+rc.lmn,ret.Lq=lc.RRq,ret.Rq=rc.LLq;if(lc.mn<ret.mn) ret.mn=lc.mn,ret.Lq=lc.Lq,ret.Rq=lc.Rq;if(rc.mn<ret.mn) ret.mn=rc.mn,ret.Lq=rc.Lq,ret.Rq=rc.Rq;return ret;
}
void down(int x){swap(seg[x].lmx,seg[x].lmn),swap(seg[x].rmx,seg[x].rmn),swap(seg[x].mx,seg[x].mn);swap(seg[x].Lp,seg[x].Lq),swap(seg[x].Rp,seg[x].Rq),swap(seg[x].LLp,seg[x].LLq),swap(seg[x].RRp,seg[x].RRq);seg[x].sum*=-1,seg[x].lmx*=-1,seg[x].rmx*=-1,seg[x].mx*=-1,seg[x].lmn*=-1,seg[x].rmn*=-1,seg[x].mn*=-1;seg[x].tag^=1;
}
void pushdown(int x){if(seg[x].tag) down(x<<1),down(x<<1^1);seg[x].tag=0;
}
void build(int l,int r,int x){if(l==r){ seg[x]={l,l,val[l],val[l],val[l],val[l],l,l,l,l,val[l],val[l],val[l],l,l,l,l,0};return;}int mid=(l+r)>>1; build(l,mid,x<<1),build(mid+1,r,x<<1^1);seg[x]=seg[x<<1]+seg[x<<1^1];
}
void modify(int l,int r,int x,int L,int R){if(L<=l&&r<=R){ down(x);return;}pushdown(x);int mid=(l+r)>>1;if(mid>=L) modify(l,mid,x<<1,L,R);if(mid<R) modify(mid+1,r,x<<1^1,L,R);seg[x]=seg[x<<1]+seg[x<<1^1];
}
signed main(){freopen("lis.in","r",stdin);freopen("lis.out","w",stdout);n=read();int ans=0;for(int i=1;i<=n;i++){int a=read(),b=read();if(a==0) a=1;else a=-1,ans+=b;val[i]=a*b,s[i]=s[i-1]+val[i];}int mx=0;s[0]=-1e18;for(int i=1;i<=n;i++) if(s[i]>s[mx]) mx=i;build(1,n,1);if(s[mx]>0) ans+=s[mx],modify(1,n,1,1,mx);printf("%lld\n",ans);int m=read();for(int i=1;i<=m;i++){Node ret=seg[1];if(ret.mx>0) ans+=ret.mx,modify(1,n,1,ret.Lp,ret.Rp);printf("%lld\n",ans);}fprintf(stderr,"%d ms\n",int64_t(1e3*clock()/CLOCKS_PER_SEC));return 0;
}

D

考虑暴力是 f i , j f_{i,j} fi,j 表示当前在 i i i,前一个选 j j j 的最大长度,因为 p i ≠ k p_i\neq k pi=k 的限制很松,所以直接记录最大值和次大值就可以维护,时间复杂度 O ( n 3 ) O(n^3) O(n3)

于是我们可以猜测需要保留的转移状态不会太多,事实上是真的
我们令三元组 ( l e n t h , p r e , i ) (lenth,pre,i) (lenth,pre,i) 表示当前在 i i i,上一个在 p r e pre pre,长度为 l e n t h lenth lenth 的状态
我们考虑用这个东西转移
每次答案,我们需要把 a j < a i a_j<a_i aj<ai ( l e n t h , p r e , j ) (lenth,pre,j) (lenth,pre,j) 取出,然后更新 i i i 的状态
结论1:对于 i i i 只需要保留 l e n t h lenth lenth 最长的两个且满足 j p ≠ j q j_p\neq j_q jp=jq 的状态
首先 j j j 相等的状态只需要保留一个,那么后面最多只会排除掉 1 1 1 个状态,所以只需要暴力 2 2 2 个状态
结论2:只需要取出 ( l e n t h , p r e , j ) (lenth,pre,j) (lenth,pre,j) 的前 5 5 5 l e n t h lenth lenth,且对于 p r e pre pre 相同的,我们只保留最大的 2 2 2
为什么,考虑如果前两个的 p r e pre pre 都和 i i i 一样,那么后两个必然有两个 p r e pre pre 不相同的,是可以更新出 2 2 2 个有效答案的

时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn)(但常数有点大,我稍微卡了一下常)

#pragma GCC optimize(3)
#include <bits/stdc++.h>
#define pb push_back
#define lowbit(x) x&-x
using namespace std;
const int N=200100;
inline int read(){int FF=0,RR=1;char ch=getchar();for(;!isdigit(ch);ch=getchar()) if(ch=='-') RR=-1;for(;isdigit(ch);ch=getchar()) FF=(FF<<1)+(FF<<3)+ch-48;return FF*RR;
}
struct Node{ int lenth,pre,x;//以x结尾的长度为lenth的序列,前一个为pre的一种转移
};
vector<Node> tr[N];
int n,a[N],p[N],cnt[N];
bool cmp(const Node &o1,const Node &o2){ return o1.lenth>o2.lenth;}
auto select(vector<Node> vec){sort(vec.begin(),vec.end(),cmp);vector<Node> ret;for(auto t:vec){int c=0;for(auto q:ret) if(q.pre==t.pre) c++;if(c==2) continue;ret.pb(t);if(ret.size()==5) break;}return ret;
}
const int B=20;
void add(int x,vector<Node> ad){for(;x<=n;x+=lowbit(x)){for(auto t:ad) tr[x].pb(t);if(tr[x].size()>=B) tr[x]=select(tr[x]);}
}
auto query(int x){vector<Node> ret;for(;x;x-=lowbit(x)) for(auto t:tr[x]) ret.pb(t);return ret;
}
void work(){n=read();for(int i=1;i<=n;i++) a[i]=read();for(int i=1;i<=n;i++) p[i]=read();int ans=0;for(int i=1;i<=n;i++){auto ret=query(a[i]-1);ret.pb({0,-1,-1});//以i为开头ret=select(ret);vector<Node> cur;for(auto t:ret)if(p[i]!=t.pre)if(!cur.size()||t.x!=cur.back().pre){cur.pb({t.lenth+1,t.x,i});if(cur.size()==2) break;}for(auto t:cur) ans=max(ans,t.lenth);add(a[i],cur);}printf("%d\n",ans);for(int i=1;i<=n;i++) tr[i].clear();
}
int main(){freopen("cactus.in","r",stdin);freopen("cactus.out","w",stdout);int T=read();while(T--) work();fprintf(stderr,"%d ms\n",int(1e3*clock()/CLOCKS_PER_SEC));return 0;
}

相关文章:

2023大联盟6比赛总结

比赛链接 反思 A 为什么打表就我看不出规律&#xff01;&#xff01;&#xff01; 定式思维太严重了T_T B 纯智障分块题&#xff0c;不知道为什么 B 100 B100 B100 比理论最优 B 300 B300 B300 更优&#xff08;快了 3 倍&#xff09;&#xff0c;看来分块还是要学习一…...

05_51单片机led流水线的实现

1:step创建一个新的项目并将程序烧录进入51单片机 以下是51单片机流水线代码的具体实现 #include <REGX52.H>void Delay500ms() //11.0592MHz {unsigned char i, j, k;i 4;j 129;k 119;do{do{while (--k);} while (--j);} while (--i); }void main(){while(1){P1 0…...

Java系列 | 如何讲自己的JAR包上传至阿里云maven私有仓库【云效制品仓库】

什么是云效 云效是云原生时代一站式 BizDevOps 平台&#xff0c;产研数字化同行者&#xff0c;支持公共云、专有云和混合云多种部署形态&#xff0c;通过云原生新技术和研发新模式&#xff0c;助力创新创业和数字化转型企业快速实现产研数字化&#xff0c;打造“双敏”组织&…...

小程序技术加速信创操作系统国产化替换

随着信息技术的不断发展&#xff0c;信息技术应用创新&#xff08;简称“信创”&#xff09;已经成为了当今企业数字化转型的重要趋势之一。信创是指在信息技术领域&#xff0c;以自主可控的国产软硬件产品和服务为核心&#xff0c;构建起一套完整的信息技术生态体系&#xff0…...

免费:实时 AI 编程助手 Amazon CodeWhisperer

点 &#xff0c;一起程序员弯道超车之路 现已正式推出实时 AI 编程助手 Amazon CodeWhisperer&#xff0c;包括 CodeWhisperer 个人套餐&#xff0c;所有开发人员均可免费使用。最初于去年推出的预览版 CodeWhisperer 让开发人员能够保持专注、高效&#xff0c;帮助他们快速、安…...

面试准备-深入理解计算机系统-信息的表示与处理1

浮点运算是不可结合的&#xff08;由于表示的精度有限&#xff09;。比如(3.141e20)-1e20是0.0而3.14(1e20-1e20)是3.14。整数虽然只能编码一个较小的取值范围&#xff0c;但是是准确的&#xff1b;浮点数虽然能编码更大的范围&#xff0c;但是是近似的。 二进制转十六进制转换…...

搭建Atlas2.2.0 集成CDH6.3.2 生产环境+kerberos

首先确保环境的干净&#xff0c;如果之前有安装过清理掉相关残留 确保安装atlas的服务器有足够的内存&#xff08;至少16G&#xff09;&#xff0c;有必要的hadoop角色 HDFS客户端 — 检索和更新Hadoop使用的用户组信息&#xff08;UGI&#xff09;中帐户成员资格的信息。对调…...

【运维笔记】swow源码编译安装

swow的github网址 https://github.com/swow/swow 从github中拉取源码 git pull https://github.com/swow/swow.git 编译安装 github中readme文件讲述了安装方法 这里整理了命令&#xff0c;进入拉取项目的目录后依次执行命令即可 #pwd 确保自己在swow目录中&#xff0c;如…...

【2023/10/16 下午10:32:39】

2023/10/16 下午10:32:39 BOOL Create(LPCTSTR strTitle, DWORD dwStyle, const RECT &rect, CWnd *pwndParent, DWORD dwPaletteSetStyle = PSS_PROPERTIES_MENU | PSS_AUTO_ROLLUP | PSS_CLOSE_BUTTON | PSS_SNAP); 2023/10/16 下午10:32:46 这是一个函数声明,看起来…...

qemu基础篇——VSCode 配置 GDB 调试

文章目录 VSCode 配置 GDB 调试安装 VSCode 插件调试文件创建调试配置配置脚本qemu 启动脚 启动调试报错情况一报错情况二报错情况三 调试界面运行 GDB 命令查看反汇编断点查看内核寄存器查看变量参考链接 VSCode 配置 GDB 调试 qemu-基础篇——arm 裸机调试环境搭建 上一节中…...

Spark常用算子

转换算子 value类型 算子名称作用Map映射a->bflatMap扁平化[[a,b],[c,d]] -> [a,b,c,d] &#xff0c;二维变一维groupBy分组[1,2,3,4] ->[[1,3],[2,4] ]&#xff0c;一维变二维filter过滤[1,2,3,4] -> [2,4] 符合条件进入&#xff0c;不符合去掉distinct去重[1,1…...

day35

今日内容概要 Socket抽象层(socket编程) 基于TCP协议的借助socket可以编程客户端和服务端的程序 链接循环 通信循环 基于UDP协议的套接字(socket)编程 粘包现象 如何解决粘包现象(重要的是解决的思路) struct模块的使用(打包、解包) 今日内容详细 Socket抽象层&#x…...

js原型链以及实现继承的手段

1.原型链 其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。 简单回顾一下构造函数、原型和实例的关系&#xff1a;每个构造函数都有一个原型对象&#xff0c;原型对象都包含一个指向构造函数的指针&#xff0c;而实例都包含一个指向原型对象的内部指针。…...

jdk8u201版本cpu.load过高问题的排查和解决

文章目录 1、背景2、现象3、排查定位4、原因总结5、解决 1、背景 jdk8u45版本存在安全漏洞&#xff0c;性能问题。需要升级到8u201 2、现象 升级到201版本后&#xff0c;出现cpu.load过高 3、排查定位 使用压测工具压测时&#xff0c;cpu.load过高问题必现&#xff0c;确认…...

【计算机网络笔记】数据交换之报文交换和分组交换

系列文章目录报文交换分组交换存储-转发报文交换 vs 分组交换总结 系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 报文交换 报文&#xff1a;源&#xff08;应用&#xff09;发送的信息整体。比如一个文件、一…...

【广州华锐互动】利用VR开展细胞基础实验教学有什么好处?

在科技发展的驱动下&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已被广泛应用于各个领域&#xff0c;包括教育和医学。尤其是在医学教育中&#xff0c;VR技术已成为一种革新传统教学模式的有效工具。本文将探讨使用VR进行细胞基础实验教学的优势。 首先&#xff0c;VR技…...

基于SSM+Vue的咖啡销售系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…...

L2-026 小字辈

本题给定一个庞大家族的家谱&#xff0c;要请你给出最小一辈的名单。 输入格式&#xff1a; 输入在第一行给出家族人口总数 N&#xff08;不超过 100 000 的正整数&#xff09; —— 简单起见&#xff0c;我们把家族成员从 1 到 N 编号。随后第二行给出 N 个编号&#xff0c;…...

linux 查看系统版本

命令&#xff1a;lsb_release -a 可能遇到的问题&#xff1a; 问题1&#xff1a; 报错&#xff1a;command not found: lsb_release原因&#xff1a;系统没有安装 lsb_release解决方案&#xff1a;sudo apt-get install lsb-release 问题2&#xff1a; 报错&#xff1a; Tra…...

Python实现PDF转换文件格式

最近工作中经常遇到收到其他人提供的pdf文档&#xff0c;想要编辑修改下或者复制部分内容比较困难&#xff0c;想通过现有的pdf工具软件转换文档格式&#xff0c;基本都要充钱&#xff0c;为了免费实现pdf转换工具&#xff0c;网上查了下相关技术方案&#xff0c;整理了下代码&…...

OmenSuperHub:硬件控制与性能优化的开源工具解决方案

OmenSuperHub&#xff1a;硬件控制与性能优化的开源工具解决方案 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度&#xff0c;自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub OmenSuperHub是一款专为惠普暗影精灵系列…...

从理论到模型:HFSS仿真平面发夹滤波器的关键步骤与参数优化

1. HFSS仿真前的理论准备 在开始HFSS仿真之前&#xff0c;我们需要先完成一些理论计算工作。这就像盖房子要先画图纸一样&#xff0c;没有理论指导的仿真就像无头苍蝇。我刚开始做滤波器设计时就犯过这个错误&#xff0c;直接上手建模&#xff0c;结果调参调到怀疑人生。 平面发…...

QPdf:Qt生态下的PDF渲染技术深度解析与现代应用实践

QPdf&#xff1a;Qt生态下的PDF渲染技术深度解析与现代应用实践 【免费下载链接】qpdf PDF viewer widget for Qt 项目地址: https://gitcode.com/gh_mirrors/qpd/qpdf 在Qt应用开发中&#xff0c;PDF文档处理一直是个技术痛点。传统方案要么依赖平台原生组件导致跨平台…...

yuzu模拟器完整配置指南:从零开始打造完美Switch游戏体验

yuzu模拟器完整配置指南&#xff1a;从零开始打造完美Switch游戏体验 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu是一款功能强大的开源任天堂Switch模拟器&#xff0c;让你在Windows、Linux和Android系统上…...

LiveSplit:速度跑计时领域的精准度革新与实践指南

LiveSplit&#xff1a;速度跑计时领域的精准度革新与实践指南 【免费下载链接】LiveSplit A sleek, highly customizable timer for speedrunners. 项目地址: https://gitcode.com/gh_mirrors/li/LiveSplit 在竞技游戏的毫秒级竞争中&#xff0c;计时工具的精准度直接决…...

【单片机】STM32的FSMC总线什么情况需要复用

FSMC是一种总线控制器&#xff0c;可以接SRAM、NOR Flash、NAND Flash、PC Card、PSRAM。FMC就是FSMC的升级版&#xff0c;多了一个SDRAM控制。FSMC总线中有分A总线&#xff08;地址&#xff09;&#xff0c;D总线&#xff08;数据&#xff09;。在芯片引脚多的情况下A和D总线可…...

Navicat试用期无限重置完全指南:4个创新方法解决14天限制

Navicat试用期无限重置完全指南&#xff1a;4个创新方法解决14天限制 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 作为数据…...

腾讯优图视觉模型入门:Youtu-VL-4B-Instruct快速上手教程

腾讯优图视觉模型入门&#xff1a;Youtu-VL-4B-Instruct快速上手教程 1. 认识Youtu-VL-4B-Instruct 想象一下&#xff0c;你正在处理一批产品图片&#xff0c;需要为每张图片写描述、识别文字内容、分析图表数据。传统方法可能需要多个工具来回切换&#xff0c;而现在&#x…...

[Python] venv、pip、解释器到底什么关系?一篇讲清环境管理

在学习 Python 的过程中,很多开发者都会遇到这样一个“经典困惑”: 为什么我用 pip install 安装了包,但代码里却 import 失败? 为什么有多个 Python? venv 到底在干嘛?它是不是“虚拟 Python”? 如果你也有这些疑问,那么这篇文章就是为你准备的。 本文将从底层逻辑出…...

别只盯着树莓派!聊聊GEC6818这块国产ARM板在嵌入式学习中的独特优势与避坑指南

国产ARM开发板GEC6818实战指南&#xff1a;从硬件解析到智能家居项目落地 在嵌入式开发领域&#xff0c;树莓派几乎成了入门者的默认选择&#xff0c;但这款英国产的单板计算机真的适合所有学习场景吗&#xff1f;当我第一次接触到GEC6818这块国产ARM开发板时&#xff0c;它的8…...