Ynoi2019模拟赛题解

自研SSD固件:从零实现固态硬盘底层存储控制系统 本文探讨了自主开发SSD固件的可行性及实现方案。分析表明,虽然NAND Flash控制协议标准化且存在开源参考实现,但开发仍面临FTL设计复杂度高、性能调优等挑战。推荐采用FPGA平台(如Xilinx Zynq-7000)搭配SLC NAND Flash的方案,预计开发周期9-12个月。系统采用分层架构设计,包含主机接口层、FTL层和闪存接口层,核心模块需实现NAND Flash底层驱动、地址映射管理和垃圾回收等功能。文中提供了关键数据结构和基础驱动代码示例,包括页读写、块擦除等操作。该方案着重解决NAND 阅读详情

Ynoi2019Ynoi2019Ynoi2019模拟赛题解

前言:第一次做YnoiYnoiYnoi还是有被离谱到的,我从来没有做到过这么卡常的题目,我到现在T1T1T1都还是707070分,lxllxllxl毒瘤名不虚传啊。但是不得不说,YnoiYnoiYnoi的题目质量很高,对提高DSDSDS水平还是很有帮助的。

T1:T1:T1: YunoYunoYuno loveslovesloves sqrtsqrtsqrt technologytechnologytechnology III

给你一个长为nnn的排列,mmm次询问,每次查询一个区间的逆序对数,强制在线。

1≤n,m≤105。1\leq n,m \leq 10^5。1≤n,m≤105。

这题非常卡常,这里我就简述做法。首先考虑序列分块,对于询问[l,r][l,r][l,r],计lll所在块为sss,rrr所在块为ttt,则可以预处理出[s+1,t−1][s+1,t-1][s+1,t−1]这些块的逆序对,具体方法就是,先对每个块块内排序,枚举两个块并通过归并排序O(n)O(\sqrt{n})O(n​)计算这两个块互相的贡献,复杂度O(nn)O(n\sqrt{n})O(nn​),记为f(a,b)f(a,b)f(a,b),再用树状数组O(nlog⁡n)O(n\log{n})O(nlogn)求出每个块内的逆序对数,即为f(a,a)f(a,a)f(a,a)。然后做一个类似二维前缀和:s(a,b)=f(a,b)+s(a,b−1)+s(a+1,b)−s(a+1,b−1)s(a,b)=f(a,b)+s(a,b-1)+s(a+1,b)-s(a+1,b-1)s(a,b)=f(a,b)+s(a,b−1)+s(a+1,b)−s(a+1,b−1),s(a,b)s(a,b)s(a,b)就是块aaa到块bbb的逆序对数。然后再算散块和散块之间的贡献,之间块内已经排过序了,之间把[l,ed(s)][l,ed(s)][l,ed(s)]和[st(t),r][st(t),r][st(t),r]从它们的块里抽出来,直接归并计算贡献,复杂度O(n)O(\sqrt{n})O(n​)。接下来算散块和[s+1,t−1][s+1,t-1][s+1,t−1]互相的贡献,可以对于每个块iii预处理[1,ed(i)][1,ed(i)][1,ed(i)]比每个数小的数个数,这个直接用一个空间O(nn)O(n\sqrt{n})O(nn​)的前缀和计算即可,然后O(1)O(1)O(1)计算对于左右散块每个数,块[s+1,t−1][s+1,t-1][s+1,t−1]对其的贡献。最后算[l,ed(s)][l,ed(s)][l,ed(s)]和[st(t),r][st(t),r][st(t),r]块内逆序对数,要处理两个数组pref[i]pref[i]pref[i]表示iii所在块的开头到iii逆序对数,suf[i]suf[i]suf[i]表示iii到iii所在块的结尾逆序对数。然后记得特判lll,rrr同块的情况,这时逆序对数即为pref[r]−pref[l−1]pref[r]-pref[l-1]pref[r]−pref[l−1]再减去[st(s),l−1][st(s),l-1][st(s),l−1]的逆序对数,后者之间归并排序求即可。复杂度O(nn)O(n\sqrt{n})O(nn​)。

代码放一下,但卡不过去,常数有点大。


#include<iostream>
#include<algorithm>
#include<string.h>
#define gc getchar
#define pc putchar
#define pb push_back
#define f first
#define s second
using namespace std;
typedef long long LL;
typedef pair<int,int> pii;
template<class Typ> Typ &Rd(Typ &x){
	char ch=gc(),sgn=0; x=0;
	for(;ch<'0'||ch>'9';ch=gc()) sgn|=ch=='-';
	for(;ch>='0'&&ch<='9';ch=gc()) x=x*10+(ch^48);
	return sgn&&(x=-x),x;
}
template<class Typ> void Wt(Typ x){
	if(x<0) pc('-'),x=-x;
	if(x>9) Wt(x/10);
	pc(x%10^48);
}
typedef long long LL;
const int N=1e5+5;
const int S=300;
LL Ans[400][400],ans;
LL Tr[N],cnt[400][N];
LL prf[N],suf[N];
int n,Q,A[N],in[N];
int st[400],ed[400]; pii B[N];
int Ma[400],Mb[400],la,lb;
void Add(int ps,int vl){
    for(;ps<=n;ps+=ps&-ps)
        Tr[ps]+=vl;
}
LL Ask(int ps){
    LL res=0;
    for(;ps;ps-=ps&-ps)
        res+=Tr[ps];
    return res;
}
int main(){
    Rd(n),Rd(Q);
    for(int i=1;i<=n;i++) B[i]={Rd(A[i]),i};
    for(int i=1;i<=n;i++) in[i]=(i-1)/S+1;
    for(int i=1;i<=in[n];i++)
        st[i]=(i-1)*S+1,ed[i]=min(i*S,n);
    for(int i=1;i<=in[n];i++){
        sort(B+st[i],B+ed[i]+1);
        memset(Tr,0,sizeof(Tr)),Add(A[st[i]],1);
        for(int j=st[i]+1;j<=ed[i];j++)
            prf[j]=prf[j-1]+Ask(n)-Ask(A[j]),Add(A[j],1);
        Ans[i][i]=prf[ed[i]];
        memset(Tr,0,sizeof(Tr)),Add(A[ed[i]],1);
        for(int j=ed[i]-1;j>=st[i];j--)
            suf[j]=suf[j+1]+Ask(A[j]),Add(A[j],1);
    }
    for(int i=1;i<=in[n];i++)
        for(int j=i+1;j<=in[n];j++)
            for(int p1=st[i],p2=st[j];p1<=ed[i];p1++){
                while(p2<=ed[j]&&B[p2].f<=B[p1].f) p2++;
                Ans[i][j]+=(LL)(p2-st[j]);
            }
    for(int len=1;len<=in[n];len++)
        for(int i=1;i+len-1<=in[n];i++){
            int j=i+len-1;
            Ans[i][j]+=Ans[i+1][j]+Ans[i][j-1];
            Ans[i][j]-=Ans[i+1][j-1];
        }
    for(int i=1;i<=in[n];i++){
        for(int j=1;j<=n;j++) cnt[i][j]=cnt[i-1][j];
        for(int j=st[i];j<=ed[i];j++) cnt[i][A[j]]++;
    }
    for(int i=1;i<=in[n];i++)
        for(int j=1;j<=n;j++) cnt[i][j]+=cnt[i][j-1];
    for(int i=1;i<=Q;i++){
        LL L,R; Rd(L)^=ans,Rd(R)^=ans;
        if(in[L]==in[R]){
            ans=prf[R]-(L!=st[in[L]])*prf[L-1],la=lb=0;
            for(int j=st[in[L]];j<=ed[in[L]];j++)
                if(B[j].s<L) Ma[++la]=B[j].f;
                else if(B[j].s<=R) Mb[++lb]=B[j].f;
            for(int p1=1,p2=1;p1<=la;p1++){
                while(p2<=lb&&Mb[p2]<=Ma[p1]) p2++;
                ans-=(LL)(p2-1);
            }
            Wt(ans),pc('\n');
        }else{
            ans=Ans[in[L]+1][in[R]-1],la=lb=0;
            ans+=suf[L]+prf[R];
            for(int j=L;j<=ed[in[L]];j++)
                ans+=cnt[in[R]-1][A[j]]-cnt[in[L]][A[j]];
            for(int j=st[in[R]];j<=R;j++){
                ans+=(LL)(ed[in[R]-1]-st[in[L]+1]+1);
                ans-=cnt[in[R]-1][A[j]]-cnt[in[L]][A[j]];
            }
            for(int j=st[in[L]];j<=ed[in[L]];j++)
                if(B[j].s>=L) Ma[++la]=B[j].f;
            for(int j=st[in[R]];j<=ed[in[R]];j++)
                if(B[j].s<=R) Mb[++lb]=B[j].f;
            for(int p1=1,p2=1;p1<=la;p1++){
                while(p2<=lb&&Mb[p2]<=Ma[p1]) p2++;
                ans+=(LL)(p2-1);
            }
            Wt(ans),pc('\n');
        }
    }
    return 0;
}

T2:T2:T2: YunoYunoYuno loveslovesloves sqrtsqrtsqrt technologytechnologytechnology IIIIII

给你一个长为nnn的序列aaa,mmm次询问,每次查询一个区间的逆序对数。

1≤n,m≤105,0≤ai≤109。1\leq n,m\leq 10^5,0\leq a_i\leq 10^9。1≤n,m≤105,0≤ai​≤109。

注意本题时限250ms250ms250ms,T1T1T1时限750ms750ms750ms都极为卡常,显然T1T1T1做法常数太大,不能通过此题。注意到可以离线,我们需要常数更小的离线做法。注意到莫队可以做到O(nmlog⁡n)O(n\sqrt m\log{n})O(nm​logn),但无法通过此题。这时候就要引入黑科技莫队二次离线\textbf{莫队二次离线}莫队二次离线。注意到莫队每次向右移动,增加的贡献是[l,r][l,r][l,r]中比rrr大的数,计f(a,b)f(a,b)f(a,b)表示[1,b][1,b][1,b]里比aaa位置的数大的数个数,则贡献可表示为f(r,r)−f(r,l−1)f(r,r)-f(r,l-1)f(r,r)−f(r,l−1),对于每次右端点移动,f(r,r)f(r,r)f(r,r)可以O(nlog⁡n)O(n\log{n})O(nlogn)预处理,下面考虑如何求f(r,l−1)f(r,l-1)f(r,l−1)。注意到可以将所以f(r,l−1)f(r,l-1)f(r,l−1)再次离线,按第二维排序,并向数据结构中进行nnn次插入,nmn\sqrt{m}nm​次查询求得所有f(r,l−1)f(r,l-1)f(r,l−1)。可以使用值域分块做到插入O(n)O(\sqrt{n})O(n​),查询O(1)O(1)O(1),所以总复杂度即为O(nn+nm)O(n\sqrt{n}+n\sqrt{m})O(nn​+nm​)。对左端点移动的处理同右端点。下面还有一个问题:空间复杂度O(nm)O(n\sqrt{m})O(nm​),因为要把所有询问离线,无法满足空间限制。注意到莫队移动左右端点时会先移动完一个再移动另一个,那我们只要记录移动开始到移动结束的位置即可,询问时直接从开始位置循环到结束位置,空间复杂度O(n+m)O(n+m)O(n+m)。

代码:

#include<iostream>
#include<vector>
#include<string.h>
#include<algorithm>
#define pb push_back
#define f first
#define s second
using namespace std;
typedef long long ll;
typedef double lf;
typedef pair<int,int> pii;
#define gc getchar 
#define pc putchar
template<class Typ> Typ &Rd(Typ &x){
	char ch=gc(),sgn=0; x=0;
	for(;ch<'0'||ch>'9';ch=gc()) sgn|=ch=='-';
	for(;ch>='0'&&ch<='9';ch=gc()) x=x*10+(ch^48);
	return sgn&&(x=-x),x;
}
template<class Typ> void Wt(Typ x){
	if(x<0) pc('-'),x=-x;
	if(x>9) Wt(x/10);
	pc(x%10^48);
}
const int N=1e5+5;
const int M=340;
int n,m,A[N],Num[N],len,Tr[N]; 
struct Qry{int l,r,id;}Qr[N];
struct Opt{int st,ed,sgn,id;};
vector<Opt> Lc[N],Rc[N];
ll s1[N],s2[N],ans[N];
int Tg[M],sum[N],st[M],ed[M];
int in(int x){return (x-1)/M+1;}
bool cmp(Qry a,Qry b){return in(a.l)==in(b.l)?a.r<b.r:in(a.l)<in(b.l);}
void Add(int ps){for(;ps<=len;ps+=ps&-ps) Tr[ps]++;}
int Ask(int ps){int sm=0; for(;ps;ps-=ps&-ps) sm+=Tr[ps]; return sm;}
int main(){
    Rd(n),Rd(m);
    for(int i=1;i<=n;i++) Num[++len]=Rd(A[i]);
    sort(Num+1,Num+len+1),len=unique(Num+1,Num+len+1)-Num-1;
    for(int i=1;i<=n;i++) A[i]=lower_bound(Num+1,Num+len+1,A[i])-Num;
    for(int i=1;i<=n;i++) s1[i]=s1[i-1]+Ask(len)-Ask(A[i]),Add(A[i]);
    memset(Tr,0,sizeof(Tr));
    for(int i=n;i>=1;i--) s2[i]=s2[i+1]+Ask(A[i]-1),Add(A[i]);
    for(int i=1;i<=m;i++) Rd(Qr[i].l),Rd(Qr[i].r),Qr[i].id=i;
    sort(Qr+1,Qr+m+1,cmp);
    for(int i=1,l=1,r=0;i<=m;i++){
        if(r<Qr[i].r) ans[Qr[i].id]+=s1[Qr[i].r]-s1[r],
            Rc[l-1].pb({r+1,Qr[i].r,-1,Qr[i].id}),r=Qr[i].r;
        if(r>Qr[i].r) ans[Qr[i].id]-=s1[r]-s1[Qr[i].r],
            Rc[l-1].pb({Qr[i].r+1,r,1,Qr[i].id}),r=Qr[i].r;
        if(Qr[i].l<l) ans[Qr[i].id]+=s2[Qr[i].l]-s2[l],
            Lc[r+1].pb({l-1,Qr[i].l,-1,Qr[i].id}),l=Qr[i].l;
        if(Qr[i].l>l) ans[Qr[i].id]-=s2[l]-s2[Qr[i].l],
            Lc[r+1].pb({Qr[i].l-1,l,1,Qr[i].id}),l=Qr[i].l;
    }
    for(int i=1;i<=in(len);i++)
        st[i]=(i-1)*M+1,ed[i]=min(i*M,len);
    for(int i=1;i<=n;i++){
        for(int j=A[i]-1;j>=st[in(A[i])];j--) sum[j]++;
        for(int j=in(A[i])-1;j>=1;j--) Tg[j]++;
        for(auto j:Rc[i]) for(int k=j.st;k<=j.ed;k++)
            ans[j.id]+=j.sgn*(sum[A[k]]+Tg[in(A[k])]);
    }
    memset(sum,0,sizeof(sum)),memset(Tg,0,sizeof(Tg));
    for(int i=n;i>=1;i--){
        for(int j=A[i]+1;j<=ed[in(A[i])];j++) sum[j]++;
        for(int j=in(A[i])+1;j<=in(len);j++) Tg[j]++;
        for(auto j:Lc[i]) for(int k=j.st;k>=j.ed;k--)
            ans[j.id]+=j.sgn*(sum[A[k]]+Tg[in(A[k])]);
    }
    for(int i=1;i<=m;i++) ans[Qr[i].id]+=ans[Qr[i-1].id];
    for(int i=1;i<=m;i++) Wt(ans[i]),pc('\n');
    return 0;
}

T3:T3:T3: YunoYunoYuno loveslovesloves sqrtsqrtsqrt technologytechnologytechnology IIIIIIIII

给你一个长为nnn的序列aaa,mmm次询问,每次查询一个区间的众数的出现次数,强制在线。

1≤n,m≤5×105,0≤ai≤109。1\leq n,m\leq 5\times 10^5,0\leq a_i\leq 10^9。1≤n,m≤5×105,0≤ai​≤109。

考虑序列分块。对于询问[l,r][l,r][l,r],记lll所在块为sss,rrr所在块为ttt,则可以先预处理出[s+1,t−1][s+1,t-1][s+1,t−1]的区间众数。具体求法就是从一个块iii开始往后扫描依次加入每个数,更新每个数出现次数时和答案取maxmaxmax即可。然后区间众数有一个性质:要么是[s+1,t−1][s+1,t-1][s+1,t−1]的答案,要么在散块中出现。这也很好证,如果一个数不是[s+1,t−1][s+1,t-1][s+1,t−1]的众数,而且不在散块中出现,显然出现次数比[s+1,t−1][s+1,t-1][s+1,t−1]的众数少。下面只要求出散块里每个数在[s+1,t−1][s+1,t-1][s+1,t−1]出现次数,和答案取maxmaxmax就好了,注意到一共有n\sqrt{n}n​级别的数,要求O(1)O(1)O(1)查询在[s+1,t−1][s+1,t-1][s+1,t−1]出现次数。显然前缀和可以做到,但是空间不够。于是有一个我认为很巧妙的方法可以实现:对每个数开一个vectorvectorvector,把它出现的所有位置插入这个vectorvectorvector,然后记录每个位置在vectorvectorvector里的下标,记为ps[i]ps[i]ps[i]。查询时一开始令ansansans等于[s+1,t−1][s+1,t-1][s+1,t−1]的众数出现次数,然后对应左边散块的每个位置iii,只要ps[i]+ansps[i]+ansps[i]+ans也在[l,r][l,r][l,r]中,就令ans+1ans+1ans+1。对应右边散块的每个位置iii,只要ps[i]−ansps[i]-ansps[i]−ans也在[l,r][l,r][l,r]中,就令ans+1ans+1ans+1。然后就做完了,时间复杂度O(nn)O(n\sqrt{n})O(nn​),空间复杂度O(n)O(n)O(n),常数很小。

#include<iostream>
#include<vector>
#include<algorithm>
#include<string.h>
#define gc getchar
#define pc putchar
#define pb push_back
#define f first
#define s second
using namespace std;
typedef long long LL;
typedef pair<int,int> pii;
template<class Typ> Typ &Rd(Typ &x){
	char ch=gc(),sgn=0; x=0;
	for(;ch<'0'||ch>'9';ch=gc()) sgn|=ch=='-';
	for(;ch>='0'&&ch<='9';ch=gc()) x=x*10+(ch^48);
	return sgn&&(x=-x),x;
}
template<class Typ> void Wt(Typ x){
	if(x<0) pc('-'),x=-x;
	if(x>9) Wt(x/10);
	pc(x%10^48);
}
const int N=5e5+5;
const int Len=750;
int n,m,A[N],Ans[Len][Len],ps[N],ans;
int cnt[N],st[Len],ed[Len],in[N];
int Num[N],len; vector<int> Id[N];
int main(){
	Rd(n),Rd(m);
	for(int i=1;i<=n;i++) Num[++len]=Rd(A[i]);
	sort(Num+1,Num+len+1);
	len=unique(Num+1,Num+len+1)-Num-1;
	for(int i=1;i<=n;i++)
		A[i]=lower_bound(Num+1,Num+len+1,A[i])-Num;
	for(int i=1;i<=n;i++)
		Id[A[i]].pb(i),ps[i]=Id[A[i]].size()-1;
	for(int i=1;i<=n;i++) in[i]=(i-1)/Len+1;
	for(int i=1;i<=in[n];i++)
		st[i]=(i-1)*Len+1,ed[i]=min(i*Len,n);
	for(int i=1;i<=in[n];i++){
		for(int j=i;j<=in[n];j++){
			Ans[i][j]=Ans[i][j-1];
			for(int k=st[j];k<=ed[j];k++)
				Ans[i][j]=max(Ans[i][j],++cnt[A[k]]);
		}
		memset(cnt,0,sizeof(cnt));
	}
	for(int i=1;i<=m;i++){
		int L,R; Rd(L)^=ans,Rd(R)^=ans;
		if(in[R]-in[L]<=1){
			ans=0;
			for(int j=L;j<=R;j++)
				ans=max(ans,++cnt[A[j]]);
			for(int j=L;j<=R;j++) cnt[A[j]]--;
			Wt(ans),pc('\n');
		}else{
			ans=Ans[in[L]+1][in[R]-1];
			for(int i=L;i<=ed[in[L]];i++)
				while(ps[i]+ans<Id[A[i]].size()
					&&Id[A[i]][ps[i]+ans]<=R) ans++;
			for(int i=st[in[R]];i<=R;i++)
				while(ps[i]-ans>=0&&Id[A[i]][ps[i]-ans]>=L) ans++;
			Wt(ans),pc('\n');
		}
	}
    return 0;
}
MTK6769平台Type-C充电全解析:从硬件管脚到PD协议实战(Android15环境) 本文深入解析了MTK6769平台在Android 15环境下Type-C充电的完整链路。从硬件管脚(特别是核心的CC引脚)功能与连接,到USB-PD协议报文抓取与实战分析,并结合MTK平台PD芯片驱动与充电IC驱动的软件框架,提供了从硬件设计到软件调试的系统性解决方案和常见问题排查案例。 阅读详情

相关推荐

三菱FX5U PLC与CCLINK模块通信配置全流程(附接线图与参数详解)

本文详细解析了三菱FX5U PLC与CCLINK模块的通信配置全流程,包括硬件接线规范、参数设置及软件编程方法。通过实战指南帮助工程师快速掌握FX5U与CCLINK模块的高效通信技术,提升工业自动化控制系统的稳定性和可靠性。

weixin_27014595的博客 431

P5412 [YNOI2019] 排队 题解

快两天没发文章了.

drrick3000的博客 849

使用Termux在Android设备上编译运行SpecCPU2006

SPEC2006搭配Termux,竟然还能这么玩?!

菜菜的菜园子 2960

打卡信奥刷题(1477)用C++实现信奥 P5413 [YNOI2019] 骑单车

小明每天早晨上课都需要骑着单车经过n段路,第i段路的长度为wi​m,限速为si​ms(在路上骑行的速度不能超过限速),加速度的绝对值最大为ai​ms2(可以加速也可以减速)。初始速度为0ms,你的任务是计算小明通过这n段路的最短时间。

Loge谈信奥--一个专注于信奥人的博客 1584

Delta机器人:运动学正反解分析

Delta机器人:运动学正反解分析 一、Delta机构简介 Delta机构是并联机构中的一种典型机构,起原始结构如图1所示。Delta机构由R.Clavel 博士在 1985年发明,是现在并联机器人中使用最多的一种,具备了并联机构所特有的优点,负载能力强、效率高、末端执行器精度高、运动惯性小,可以高速稳定运动等。因此在机器人领域获得了越来越广泛的应用。以实现高速、精准、高效的运动。           &n

花洛兮灬 3万+

别再乱调NvM_WriteBlock了!手把手教你搞懂Autosar NVM状态机与读写时序

本文深入解析Autosar NVM状态机与读写时序,帮助开发者避免常见错误。通过详细的状态机解读、最佳实践代码示例和异常处理策略,提升嵌入式系统中数据存储的可靠性。特别针对NvM_WriteBlock的调用逻辑和状态机机制进行实战讲解,解决工程师在实际开发中遇到的异步写入问题。

weixin_33701617的博客 344

YNOI板刷计划&记录

离开学还有7天,尝试刷30道YNOI并写题解 冲冲冲

lahlah的博客 862

深度拆解 ‘High-Frequency Trading’ (HFT) 系统:解析如何在 100 纳秒内完成从网卡到 C++ 策略的响应

在100纳秒内完成从网卡到C++策略的响应,这是一项对技术栈每一个层面都进行极限优化的系统工程。它要求我们深入理解计算机体系结构、操作系统、网络协议和C++语言的底层机制。从物理距离的极致缩短,到高性能网卡和内核旁路技术,再到C++代码中每一个字节、每一个CPU周期的精打细算,HFT系统展现了人类对计算速度的永恒追求。这项技术不仅仅应用于金融交易,其背后的低延迟理念和实现方法,如DPDK、无锁编程、硬件加速等,正在逐渐渗透到其他对延迟敏感的领域,例如电信网络、边缘计算和工业自动化。

weixin_41455464的博客 1039

【口胡】Ynoi刷题记录

[Ynoi2019 模拟赛] Yuno loves sqrt technology III 分块后,预处理 Fi,jF_{i,j}Fi,j​表示第 i∼ji\sim ji∼j块的众数的出现次数。 用vector按顺序存每个数值所有元素的出现位置。 再记录每个元素在相应vector里的下标 ppp。 考虑询问,中间的直接使用预处理出的 Fi,jF_{i,j}Fi,j​的值即可。设当前的答案 ans=Fi,jans=F_{i,j}ans=Fi,j​。 考虑边界的元素。这里我们运用迭代的思想。对于右边的边角元素

cqbzlydd的博客 582

YOLO创新点改进点的消融实验设计规范

YOLO改进的消融实验是一种重要的方法,用于评估和验证模型中不同组件的影响。在进行YOLO改进的消融实验时,我们可以选择一些可能的改进点,比如Backbone网络、Anchor框设计和损失函数设计,然后通过实验来分析它们对模型性能的影响。首先,我们需要确定实验设计。对于每个改进点,我们将设计多个实验组,并针对每个实验组训练模型并进行性能评估。这里以三个改进点为例进行说明:改进点1:Backbone网络 (改进点2:Anchor框设计 (改进点3:损失函数设计 (

crasher123的博客 2909

C#与海康威视工业相机结合OpenCV与WPF:打造高效的机器视觉应用程序

本文介绍了基于C#、海康威视工业相机SDK和OpenCV的机器视觉应用开发方法。首先配置开发环境,包括海康SDK、OpenCvSharp和WPF项目设置。重点阐述了如何通过SDK初始化相机、获取视频流,并将YUV数据转换为OpenCV可处理的Mat格式进行图像处理(如边缘检测)。同时展示了如何用WPF实现界面交互和实时图像显示。该方案为工业自动化、质量检测等场景提供了高效的技术实现路径,结合了海康相机的高性能采集、OpenCV的强大算法和WPF的交互优势,具有较高的实用价值。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1498

Ynoi(5/35)

luoguP5309 [Ynoi2012]D1T1 luoguP5310 [Ynoi2012]D1T2 luoguP5311 [Ynoi2012]D1T3 luoguP5312 [Ynoi2012]D2T1 luoguP5313 [Ynoi2012]D2T2 luoguP5314 [Ynoi2012]D2T3 luoguP5062 [Ynoi2014]在太阳西斜的这个世界里 luog...

weixin_30664539的博客 1356

第4.4节:保护轴承与安全系统

飞轮储能系统的保护轴承是磁悬浮失效时的最后安全屏障,其设计需满足非干涉性、高可靠性和有限寿命承载原则。转子跌落过程包括自由下落、碰撞、进动和滑行减速等复杂非线性阶段,产生远超常规工况的冲击载荷。保护轴承需具备极限冲击容量、高温耐受性和抗卡死能力。系统采用多层级安全架构,结合故障诊断与健康管理,通过监测振动、电流等参数实现预测性维护。安全停机序列有序结合主动制动与被动摩擦制动,确保系统在极端工况下的安全。保护轴承类型多样,需根据系统规模与可靠性要求合理选择。

技术工作者 228

LG P5046 [Ynoi2019 模拟赛] Yuno loves sqrt technology I Solution

LG P5046 Sol

pystraf的博客 1105

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Ynoi2019模拟赛划水记

几天前被各种多项式搞自闭了,就去\(Ynoi2019模拟赛\)划了一波水,简单记一下(不过代码是不会有的,因为我一个题都没A而且看了讲评完全没有改题的欲望) T1 正解码量巨大而我只写了暴力,但是居然过了\(50pts\),为什么呢……回头审视代码发现原来是我习惯性卡常而且自己的代码框架里有这么一句: #pragma GCC optimize(3, "inline", "Ofast") 于是多水了...

weixin_30896825的博客 247

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

洛谷P5048 [Ynoi2019模拟赛]Yuno loves sqrt technology III(分块)

传送门 众所周知lxl是个毒瘤,Ynoi道道都是神仙题 用蒲公英那个分块的方法做结果两天没卡过去→_→ 首先我们分块,预处理块与块之间的答案,然后每次询问的时候拆成整块和两边剩下的元素 整块的答案很简单,那么只有两边剩下的元素有可能更新答案 我们对于每一个元素用\(vector\)记录所有的出现位置,设\(dep_i\)为位置为\(i\)的元素在\(vector\)中的位置,那么如果\(a_i\)...

weixin_34409822的博客 196

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

[Ynoi2019模拟赛]Yuno loves sqrt technology III

题目大意: 给你一个长为\(n\)的序列\(a\),\(m\)次询问,每次查询一个区间的众数的出现次数,强制在线。 解题思路: 出题人题解 众所周知lxl是个毒瘤,Ynoi道道都是神仙题 首先得离散化。 分块后,预处理\(F_{i,j}\)表示第\(i\sim j\)块的众数的出现次数。此处要用一个桶,空间复杂度\(O(n)\),时间复杂度\(O(n\sqrt n)\)。 ...

249

P5048 [Ynoi2019 模拟赛] Yuno loves sqrt technology III

假设已经知道了区间内众数出现的次数。查询区间众数出现的次数, 尝试对。对于每个数字记录出现的位置。假设区间内众数出现的次数是。

Ayanami_Rei的博客 567

[Ynoi2019模拟赛]Yuno loves sqrt technology I

题目描述 给你一个长为n的排列,m次询问,每次查询一个区间的逆序对数,强制在线。 题解 MD不卡了。。TMD一点都卡不动。 强制在线的话也没啥好一点的方法,只能分块预处理了。 对于每个块,我们设lef[i]表示i到这个i这个元素所在块的块头的区间逆序对,rig[i]表示到块尾的逆序对。 在设一个cnt[i][j]表示从第i个块到第j个块的逆序对。 然后考虑如何处理询问。 整块之间的...

weixin_34143774的博客 172

Yuno loves sqrt technology III[Ynoi2019模拟赛]【数组分块】

题目链接 我们想知道一个区间内的众数的个数,那么,我们可以把区间看成两种形式:「完整区间」、「不完整区间」,我们把一个区间分成这样的两种,然后可以预处理出来一个「完整区间」内的众数的个数,那么如果我们现在假设知道了这个答案,岂不是就可以对不完整区间进行查询了,如果一个不完整区间的数,能改变当前答案,那么也就是说明它的后面的第ans个它自己是在区间内的,那么我们可以预处理这个信息即可。 当然,本题有个很坑的地方,切记l和r的大小关系一定要判断。 #include <iostream&gt..

既然弱小,就只顾变强就是了 232

[Ynoi2019模拟赛]Yuno loves sqrt technology II

题目大意: 给定一个长为\(n\)的序列,\(m\)次询问,每次查询一个区间的逆序对数。 32MB。 解题思路: 出题人题解 众所周知lxl是个毒瘤,Ynoi道道都是神仙题 二次离线莫队。 对于每个区间\([l,r]\),考虑将右端点向右移动1格。 其多出来的部分是\([l,r]\)与\(a_{r+1}\)产生的逆序对(\(a\)与\(b\)产生的逆序对和\(b\)与\(...

295
上一篇: CF613E 题解
下一篇: UVA12096 题解
-Autisia-
博客等级 码龄5年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值