各种杂题合集

Codechef 一眼题题解合集 文章目录Sereja and EqualityDivision GameReach EquilibriumChef and SoccerPartition into PermutationsTravelling SaleschefKira Loves PalindromesPlaying with Numbers Sereja and Equality 简单组合数学+无脑前缀和优化dp计数。 fi... 阅读详情

.
好久没有往blog搬运题解了,稍微总结一下

1.基环树


一个非常套路的题目类型,都是可以直接复制代码的那种
基本操作就是,dfs找环,让后拉出来倍长,最后在上面做dp即可

CodeForces 835F Roads in the Kingdom


大概就是要找删掉一条边后使得树最小的直径
先dp环旁边的数,找到子树的到根最长链,设为 f f f
倍长后令 F i = S i + f i , G i = f i − S i F_i=S_i+f_i,G_i=f_i-S_i Fi​=Si​+fi​,Gi​=fi​−Si​这里 S S S是环上 1 1 1号点到i的距离
线段树做区间最大值和次大值查询即可( G m a x + F m a x ) G_{max}+F_{max}) Gmax​+Fmax​)
感觉这个做法可能有些复杂,但是我不确定直接用后面的单调队列做法是不是对的

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 200010
#define LL long long
#define mid (l+r>>1)
#define ls l,mid,x<<1
#define rs mid+1,r,x<<1|1
using namespace std;
struct pr{ int x,y; } S[N<<3][2];
struct edge{ int v,c,nt; } G[N<<1];
int n,m,cnt,h[N],vis[N],w[N<<1];
LL g[N],f[N],A,B=1ll<<62,t=0,s[N<<1],F[N<<1][2];
inline bool c0(int i,int j){ return F[i][0]>F[j][0]; }
inline bool c1(int i,int j){ return F[i][1]>F[j][1]; }
inline pr m0(pr a,pr b){
	int t[4]={a.x,a.y,b.x,b.y};
	sort(t,t+4,c0); return (pr){t[0],t[1]};
}
inline pr m1(pr a,pr b){
	int t[4]={a.x,a.y,b.x,b.y};
	sort(t,t+4,c1); return (pr){t[0],t[1]};
}
inline void ps(int x){
	int l=x<<1,r=x<<1|1;
	S[x][0]=m0(S[l][0],S[r][0]);
	S[x][1]=m1(S[l][1],S[r][1]);
}
inline void build(int l,int r,int x){
	if(l==r){ S[x][0]=S[x][1]=(pr){l,0}; return; }
	build(ls); build(rs); ps(x);
}
inline pr query1(int l,int r,int x,int L,int R){
	if(L<=l && r<=R) return S[x][0];
	pr ans={0,0};
	if(L<=mid) ans=query1(ls,L,R);
	if(mid<R) ans=m0(ans,query1(rs,L,R));
	return ans;
}
inline pr query2(int l,int r,int x,int L,int R){
	if(L<=l && r<=R) return S[x][1];
	pr ans={0,0};
	if(L<=mid) ans=query2(ls,L,R);
	if(mid<R) ans=m1(ans,query2(rs,L,R));
	return ans;
}
inline void adj(int x,int y,int c){
	G[++cnt]=(edge){y,c,h[x]}; h[x]=cnt;
	G[++cnt]=(edge){x,c,h[y]}; h[y]=cnt;
}
inline int fc(int x,int p){
	if(vis[x]){ w[++t]=x; return 1; }
	vis[x]=1;
	for(int v,i=h[x];i;i=G[i].nt)
		if((v=G[i].v)!=p && fc(v,x)){ w[++t]=x; return x!=w[1]; }
	vis[x]=0; return 0;
}
inline void dfs(int x,int p){
	f[x]=g[x]=0;
	for(int v,i=h[x],t[4];i;i=G[i].nt)
		if(!vis[v=G[i].v] && v!=p){
			dfs(v,x);
			if(f[v]+G[i].c>f[x]){
				g[x]=f[x];
				f[x]=G[i].c+f[v];
			} else if(f[v]+G[i].c>g[x]) g[x]=f[v]+G[i].c;
		}
}
int main(){
	scanf("%d",&n);
	for(int x,y,c,i=1;i<=n;++i){
		scanf("%d%d%d",&x,&y,&c);
		adj(x,y,c);
	}
	fc(1,0);
	for(int i=1;i<=n;++i) if(vis[i]) dfs(i,0);
	for(int i=1;i<=n;++i) A=max(A,f[i]+g[i]); --t;
	for(int i=1;i<=t;++i){
		for(int j=h[w[i]];j;j=G[j].nt)
			if(G[j].v==w[i+1]) s[i+1]=s[i]+G[j].c;
		w[i+t]=w[i];
	}
	for(int i=2;i<=t;++i) s[i+t]=s[i]+s[t+1]; F[0][0]=F[0][1]=-1e17;
	for(int i=1;i<=t<<1;++i) F[i][0]=f[w[i]]+s[i],F[i][1]=f[w[i]]-s[i];
	build(1,m=t<<1,1);
	for(int i=1;i<=t;++i){
		pr d[2]={query1(1,m,1,i,i+t-1),query2(1,m,1,i,i+t-1)};
		if(d[0].x!=d[1].x) B=min(B,F[d[0].x][0]+F[d[1].x][1]);
		else B=min(B,max(F[d[0].x][0]+F[d[1].y][1],F[d[0].y][0]+F[d[1].x][1]));
	}
	printf("%lld\n",max(A,B));
}


CodeForces 875F Royal Questions


这个题和上面画风不太一样
有点类似于带权的二分图匹配,但是明显会超时
考虑一种奇怪的做法,对于每个公主,我们看做一条边 ( a i , b i ) (a_i,b_i) (ai​,bi​)
那么我们选出一部分的边,使得整个图里面每个联通块边数都不超过点数,那么就一定有一个合法方案
为了使得答案最大,将边排序之后插入图中,用并查集维护连通性即可

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct edge{ int x,y,w; } graphs[200010];
int n,m,f[200010],g[200010],A;
inline int gf(int x){ return x==f[x]?x:f[x]=gf(f[x]); }
inline bool c1(edge a,edge b){ return a.w>b.w; }
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;++i) scanf("%d%d%d",&graphs[i].x,&graphs[i].y,&graphs[i].w);
	sort(graphs+1,graphs+1+m,c1);
	for(int i=1;i<=n;++i) f[i]=i;
	for(int i=1;i<=m;++i){
		int x=gf(graphs[i].x),y=gf(graphs[i].y);
		if(x!=y){
			if(g[x]&g[y]) continue;
			f[y]=x; g[x]|=g[y]; A+=graphs[i].w;
		} else if(!g[x]){ g[x]=1; A+=graphs[i].w; }
	}
	printf("%d\n",A);
}


Bzoj 1040 骑士


这个题就和第一题一样套路了,先做环外子树的答案,让后环上分取不取1号点做2次dp即可,可以把这类题目当做一个模板

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 1000010
using namespace std;
struct edge{ int v,nt; } G[N<<1];
int n,m,cnt=1,h[N],w[N],vis[N],t;
long long f[N],g[N],F[N],d[N];
inline void adj(int x,int y){
	G[++cnt]=(edge){y,h[x]}; h[x]=cnt;
	G[++cnt]=(edge){x,h[y]}; h[y]=cnt;
}
inline int fc(int x,int p){
	if(vis[x]){ w[++t]=x; return 1; }
	vis[x]=1;
	for(int v,i=h[x];i;i=G[i].nt)
		if(i!=p && fc(v=G[i].v,i^1)){ w[++t]=x; return x!=w[1]; }
	return vis[x]=0;
}
inline void dfs(int x,int p){
	f[x]=d[x]; g[x]=0;
	for(int v,i=h[x];i;i=G[i].nt)
		if(!vis[v=G[i].v]&&i!=p){
			dfs(v,i^1);
			f[x]+=g[v];
			g[x]+=max(g[v],f[v]);
		}
}		
inline long long D(int x){
	static long long G[N]; t=0;
	fc(x,0); memset(G,0,t+5<<3);memset(F,0,t+5<<3); --t;
	for(int i=1;i<=t;++i) dfs(w[i],0);
	for(int i=1;i<t;++i){
		F[i]=G[i-1]+f[w[i]]; G[i]=max(G[i-1],F[i-1])+g[w[i]];
	}
	G[t]=max(G[t-1],F[t-1])+g[w[t]];
	long long ans=max(F[t-1],G[t]);
	memset(F,0,t+3<<2); memset(G,0,t+3<<2);
	for(int i=t;i>1;--i){
		F[i]=G[i+1]+f[w[i]]; G[i]=max(G[i+1],F[i+1])+g[w[i]];
	}
	G[1]=max(G[2],F[2])+g[w[1]];
	return max(ans,G[1]);
}
int main(){
	scanf("%d",&n);
	for(int x,i=1;i<=n;++i){
		scanf("%d%d",d+i,&x);
		adj(x,i);
	}
	long long ans=0;
	for(int i=1;i<=n;++i)
		if(!f[i]) ans+=D(i);
	printf("%lld\n",ans);
}


Bzoj 2878迷失游乐园


我最不擅长的期望dp题,首先还是先用上刚刚的模板,让后考虑怎么dp
先定义一些变量 d i , f i , d i s ( i , j ) d_i,f_i,dis(i,j) di​,fi​,dis(i,j)分别表示 i i i的儿子个数,向下走到叶子节点的期望步数和 i , j i,j i,j之间的距离
那么可以用dp求出
f x = ∑ v ∈ s o n x f v + d i s ( x , v ) d x f_x=\frac{\sum_{v\in son_x}f_v+dis(x,v)}{d_x} fx​=dx​∑v∈sonx​​fv​+dis(x,v)​
让后定义 g x g_x gx​表示 x x x往上走走到其他叶子节点的期望长度
g x = d i s ( p , x ) + f p d p − f x − d i s ( p , x ) + g p d p g_x=dis(p,x)+\frac{f_pd_p-f_x-dis(p,x)+g_p}{d_p} gx​=dis(p,x)+dp​fp​dp​−fx​−dis(p,x)+gp​​这个式子的意思就是说,走上父亲节点后两种情况,要么是往除了 i i i以外的节点走去( f p d p − f x − d i s ( p , x ) f_pd_p-f_x-dis(p,x) fp​dp​−fx​−dis(p,x))或者是继续往父亲走( g p g_p gp​) 让后除以度数 d p d_p dp​

这个是树上的部分,现在继续考虑环
这个时候 g g g的定义就有所改变,我们考虑一下在环上走的方案
有两个方向,所以要分开考虑
我们将环上的节点的父亲,定义为环上和他相连的两个节点
是的,我们需要修改一下刚刚的式子
g x = d i s ( p , x ) + f p d p − f x − d i s ( p , x ) + c f p g p d p + c f p g_x=dis(p,x)+\frac{f_pd_p-f_x-dis(p,x)+cf_pg_p}{d_p+cf_p} gx​=dis(p,x)+dp​+cfp​fp​dp​−fx​−dis(p,x)+cfp​gp​​这里, c f x cf_x cfx​表示x的父亲个数,只能为 1 1 1或者 2 2 2
那么只要算出了环上节点的 g g g,就可以计算外面子树的答案了
考虑枚举每一个环上的节点作为出发点,假设为 s s s
那么考虑s往左走的所有节点(右边也做一次类似的)对 g s g_s gs​的贡献
写成转移式大概是这样的(这里 s + i s+i s+i是环上从s往下数i个的那个节点)
g s = ∑ i = 1 ∣ C i r c l e ∣ ( ∏ j = 1 i − 1 1 d j + s + 1 ) ( d i s ( s , i + s ) + f i + s d i + s d i + s + 1 ) g_s=\sum_{i=1}^{|Circle|}(\prod_{j=1}^{i-1}\frac{1}{d_{j+s}+1})(dis(s,i+s)+\frac{f_{i+s}d_{i+s}}{d_{i+s}+1}) gs​=i=1∑∣Circle∣​(j=1∏i−1​dj+s​+11​)(dis(s,i+s)+di+s​+1fi+s​di+s​​)让后自然反方向走也会有一个类似的式子,改成 s − i s-i s−i即可
最后的答案就是 A n s ( n ) = ( f n d n + g n c f n ) / ( d n + c f n ) Ans(n)=(f_nd_n+g_ncf_n)/(d_n+cf_n) Ans(n)=(fn​dn​+gn​cfn​)/(dn​+cfn​)
真的令人迷失心智,几乎就是把别人的式子抄了一次

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 100010
#define db double
using namespace std;
struct edge{ int v,c,nt; } G[N<<1];
db f[N],g[N]; bool vis[N];
int n,m,cnt,h[N],d[N],son[N],w[N],t,cf[N],s[N];
inline void adj(int x,int y,int c){
	G[++cnt]=(edge){y,c,h[x]}; h[x]=cnt;
	G[++cnt]=(edge){x,c,h[y]}; h[y]=cnt;
}
inline int fc(int x,int p){
	if(vis[x]){ w[++t]=x; return 1; }
	vis[x]=1;
	for(int v,i=h[x];i;i=G[i].nt)
		if((v=G[i].v)!=p && fc(v,x)){ w[++t]=x; s[t]=s[t-1]+G[i].c; return x!=w[1]; }
	return vis[x]=0;
}
inline void dfs(int x,int p){
	f[x]=0; 
	for(int v,i=h[x];i;i=G[i].nt)
		if(!vis[v=G[i].v]&&v!=p){
			cf[v]=1; son[x]++;
			dfs(v,x); f[x]+=f[v]+G[i].c;
		}
	if(son[x]) f[x]/=son[x];
}
inline void dgs(int x,int p){
	for(int v,i=h[x];i;i=G[i].nt)
		if(!vis[v=G[i].v]&&(v=G[i].v)!=p){
			g[v]=G[i].c;
			if(cf[x]+son[x]-1) g[v]+=(cf[x]*g[x]+son[x]*f[x]-f[v]-G[i].c)/(cf[x]+son[x]-1);
			dgs(v,x);
		}
}
int main(){
	scanf("%d%d",&n,&m);
	for(int c,x,y,i=1;i<=m;++i){
		scanf("%d%d%d",&x,&y,&c);
		adj(x,y,c);
	}
	if(m<n){
		dfs(1,0);
		dgs(1,0);
	} else {
		fc(1,0); t--; db pk;
		for(int i=1;i<=t;++i)
			dfs(w[i],0),cf[w[i]]=2;
		for(int i=1;i<=t;++i) w[i+t]=w[i],s[i+t]=s[i]+s[1+t];
		for(int i=1;i<=t;++i){
			pk=1.;
			for(int j=1;j<t;++j){
				if(j<t-1) g[w[i]]+=pk*(s[i+j]-s[i+j-1]+f[w[i+j]]*son[w[i+j]]/(son[w[i+j]]+1));
				else g[w[i]]+=pk*(s[i+j]-s[i+j-1]+f[w[i+j]]);
				pk/=(son[w[i+j]]+1);
			}
		}
		for(int i=t<<1;i>t;--i){
			pk=1.;
			for(int j=1;j<t;++j){
				if(j<t-1) g[w[i]]+=pk*(s[i-j+1]-s[i-j]+f[w[i-j]]*son[w[i-j]]/(son[w[i-j]]+1));
				else g[w[i]]+=pk*(s[i-j+1]-s[i-j]+f[w[i-j]]);
				pk/=(son[w[i-j]]+1);
			}
		}
		for(int i=1;i<=t;++i){
			g[w[i]]/=2.; dgs(w[i],0); 
		}
	}
	db A=0;
	for(int i=1;i<=n;++i)
		A+=(son[i]*f[i]+g[i]*cf[i])/(son[i]+cf[i]);
	printf("%.5lf\n",A/n);
}


Bzoj1791 Island 岛屿


和第一个题一样的,直接套用即可,不过要稍加修改,因为整个图并不是联通的,所以需要对每个联通块分别统计答案,而且这里统计的是最大值,所以其实可以直接用单调队列在环上做dp,不过既然已经有成品了就跳过吧

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 1000010
#define LL long long
#define mid (l+r>>1)
#define ls l,mid,x<<1
#define rs mid+1,r,x<<1|1
using namespace std;
struct pr{ int x,y; } S[N<<1][2];
struct edge{ int v,c,nt; } G[N<<1];
int n,m,cnt=1,h[N],w[N<<1]; bool cd[N],vis[N];
LL g[N],f[N],A,B=1ll<<62,t=0,s[N<<1],F[N<<1][2];
inline bool c0(int i,int j){ return F[i][0]>F[j][0]; }
inline bool c1(int i,int j){ return F[i][1]>F[j][1]; }
inline pr m0(pr a,pr b){
	if(F[a.x][0]<F[b.x][0]) swap(a,b);
	if(F[a.y][0]<F[b.x][0]) a.y=b.x; return a;
}
inline pr m1(pr a,pr b){
	if(F[a.x][1]<F[b.x][1]) swap(a,b);
	if(F[a.y][1]<F[b.x][1]) a.y=b.x; return a;
}
inline void ps(int x){
	int l=x<<1,r=x<<1|1;
	S[x][0]=m0(S[l][0],S[r][0]);
	S[x][1]=m1(S[l][1],S[r][1]);
}
inline void build(int l,int r,int x){
	if(l==r){ S[x][0]=S[x][1]=(pr){l,0}; return; }
	build(ls); build(rs); ps(x);
}
inline pr query1(int l,int r,int x,int L,int R){
	if(L<=l && r<=R) return S[x][0];
	pr ans={0,0};
	if(L<=mid) ans=query1(ls,L,R);
	if(mid<R) ans=m0(ans,query1(rs,L,R));
	return ans;
}
inline pr query2(int l,int r,int x,int L,int R){
	if(L<=l && r<=R) return S[x][1];
	pr ans={0,0};
	if(L<=mid) ans=query2(ls,L,R);
	if(mid<R) ans=m1(ans,query2(rs,L,R));
	return ans;
}
inline void adj(int x,int y,int c){
	G[++cnt]=(edge){y,c,h[x]}; h[x]=cnt;
	G[++cnt]=(edge){x,c,h[y]}; h[y]=cnt;
}
inline int col(int x){
	cd[x]=1;
	for(int i=h[x];i;i=G[i].nt)
		if(!cd[G[i].v]) col(G[i].v);
}
inline int fc(int x,int p){
	if(vis[x]){ w[++t]=x; return 1; }
	vis[x]=1; 
	for(int v,i=h[x];i;i=G[i].nt)
		if(i!=p && fc(v=G[i].v,i^1)){ w[++t]=x; s[t]=s[t-1]+G[i].c; return x!=w[1]; }
	vis[x]=0; return 0;
}
inline void dfs(int x,int p){
	f[x]=g[x]=0;
	for(int v,i=h[x],t[4];i;i=G[i].nt)
		if(!vis[v=G[i].v] && i!=p){
			dfs(v,i^1);
			if(f[v]+G[i].c>f[x]){
				g[x]=f[x];
				f[x]=G[i].c+f[v];
			} else if(f[v]+G[i].c>g[x]) g[x]=f[v]+G[i].c;
		}
	A=max(A,f[x]+g[x]);
}
inline LL D(int x){
	t=0; col(x);
	fc(x,0); A=B=0; --t;
	for(int i=1;i<=t;++i) dfs(w[i],0);
	for(int i=1;i<=t;++i){ w[i+t]=w[i]; s[i+t]=s[i]+s[t+1]; }
	F[0][0]=F[0][1]=-1e17;
	for(int i=1;i<=t<<1;++i) F[i][0]=f[w[i]]+s[i],F[i][1]=f[w[i]]-s[i];
	build(1,m=t<<1,1);
	for(int i=1;i<=t;++i){
		pr d[2]={query1(1,m,1,i,i+t-1),query2(1,m,1,i,i+t-1)};
		if(d[0].x!=d[1].x) B=max(B,F[d[0].x][0]+F[d[1].x][1]);
		else B=max(B,max(F[d[0].x][0]+F[d[1].y][1],F[d[0].y][0]+F[d[1].x][1]));
	}
	return max(A,B);
}
int main(){
	scanf("%d",&n);
	for(int x,y,c,i=1;i<=n;++i){
		scanf("%d%d",&x,&c);
		adj(x,i,c);
	}
	LL ans=0;
	for(int i=1;i<=n;++i)
		if(!cd[i]){ ans+=D(i); }
	printf("%lld\n",ans);
}

持续更新ing

OJ代码合集7z解压与复用:从刷题资料到个人进度表 在线判题系统(OJ)是程序员刷题与编程入门的基础工具,许多高校会将历史提交记录打包成代码合集,以7z格式分发,以利用LZMA算法的高压缩率存储大量重复文本。面对这类合集,单纯解压远不够,还需要理解其内部结构、识别语言后缀,并建立索引,才能从“答案库”变为“样本库”。无论是Windows、Linux还是macOS,安装p7zip或7-Zip后即可安全解压,并可用命令行校验完整性、规避中文乱码与路径过长等常见坑。进一步结合diff本地验证、Python索引和集合差集脚本,可以将合集转化为个人刷题进度表,适用于备 阅读详情

相关推荐

企业级智能问数开发的核心痛点与技术聚焦

本文介绍了企业级智能问数系统开发的三大核心问题和解决方案:语义解析不精准、SQL生成不健壮、企业适配难落地。文章从开发者视角出发,详细拆解了NLU语义解析、SQL生成、对话记忆、企业级适配四大核心模块的技术实现。 在技术选型方面,推荐了LangChain+DeepSeek-R1、FAISS/Milvus、SQLAlchemy等工具链组合。针对企业级需求,重点讲解了: 语义解析模块的意图识别优化和要素提取技术 SQL生成模块的语法校验与性能优化方案 对话记忆模块的Redis存储实现 企业级适配的三层防护体系和

lamehsl的专栏 1046

2019 CCPC 重现赛 1006 基环树

设图中环的大小分别为 c1, c2, ..., ck,不属于任何一个环的 边数为 b,则答案为:2^b*(2^c1 - 1)*...*(2^ck - 1) #include<bits/stdc++.h> using namespace std; const int maxn = 3e5 + 10; const int mod = 998244353; typede...

恒持此志成永志 278

NXP(imx8qxp)系列DDR校准以及android镜像烧录

文章目录一、 不得不吐槽以下nxp的这个代码镜像烧写的过程,做得太开源了,导致镜像根本烧录不进去,实属令人头痛。 一、

永不秃头的程序员的博客 5991

NOI 2013 快餐店

Description: 有nnn个点,nnn条边的图,求一个点,使得这个点到其它的点的最大距离最小(注意:这个点可以在边上)。 n≤105,Li≤109n\le10^5,L_i\le10^9n≤105,Li​≤109 Solution: 因为它是一个nnn个点nnn条边的图。 那么它是一个基环树。 首先,一定会先考虑分类讨论。我们优先解决环上。 对于点在环上时,我们可以发现,最大距离一定是环上...

Caristra的博客 353

深入浅出:利用NXP S32K3xx的HSE模块实现OTA双分区(AB Swap)与安全回滚

本文深入解析NXP S32K3xx HSE模块在汽车电子OTA双分区架构中的工程实践,详细介绍了HSE模块如何通过AB Swap双分区机制实现固件安全升级与毫秒级回滚。内容涵盖内存重映射硬件原理、分区切换异常处理及寄存器级诊断方法,为开发高可靠嵌入式系统提供实战指导。

weixin_30919429的博客 793

【LVGL】从HTML到LVGL:嵌入式UI的设计迁移与落地实践

嵌入式UI迁移实践:从HTML到LVGL 本文介绍了将HTML/CSS设计的UI原型迁移到嵌入式系统(LVGL)的完整流程,重点涉及"HTML→Figma→LVGL"的三步转换方法。具体内容包括: 设计迁移流程:通过Figma作为中间桥梁,将HTML原型转化为标准设计资产,再适配到LVGL库; 工具与参数准备:详细列出了设计迁移所需的工具链和需要提取的核心设计参数; Figma还原步骤:分组件讲解如何在Figma中1:1还原HTML设计,包括标题栏、压力显示区、图表区等核心组件; LVG

ymlmail的博客 1970

动态规划刷(杂)题合集

连续子数组的最大和(题目链接) 题目描述: 输入一个 非空 整型数组,数组里的数可能为正,也可能为负。 数组中一个或连续的多个整数组成一个子数组。 求所有子数组的和的最大值。 要求时间复杂度为O(n)。 解题思路: 最粗暴的方法就是都遍历一遍 class Solution { public: int maxSubArray(vector<int>& nums) { const int N = nums.size(); int maxn = INT_

lmmmmmmmmmmmmmmm的博客 572

最小二乘(MLS)求点云法向量

MLS算法的基本思想是通过在点云的局部邻域内拟合一个光滑曲面,如平面或多项式曲面,以此来重建和处理点云数据。对于法向量估计,MLS通常在每个点的邻域内拟合局部平面,然后从该平面的法向量作为点的法向量。

twnkie的博客 744

多项式与生成函数教程合集

多项式教程集合

jiahonghao2002的博客 326

Windows 下 OpenClaw(小龙虾) 安装全记录:从零到一的保姆级图文教程(持续更新中)

本文主要介绍了Windows 下 OpenClaw 安装全记录:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 实战教程 2.1 步骤一 安装Node.js 2.2 步骤二:安装并配置OpenClaw 2.3 步骤三:配置模型 2.4 步骤四:对话 3. 后续使用步骤

weixin_43178406的博客 16万+

以 Joule 驱动的生成式开发:把需求文档直接变成可运行的 SAP 应用

摘要:SAP BTP的AI助手Joule正在改变开发方式,支持从自然语言描述自动生成数据模型、服务、UI及测试代码。在SAP Business Application Studio中,Joule能根据业务需求生成结构化代码,并提供代码补全、重构、解释等功能。开发者需注意避免上传敏感数据,并对AI生成的代码进行人工审核。Joule特别针对ABAP开发进行了优化,提供符合SAP规范的代码建议,帮助迁移遗留系统。此外,它还能快速生成CAP项目原型,但所有AI生成内容都需经过严格测试验证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 340

【中级软件设计师】—(针对上午题)可靠性公式(二十二)

可靠性公式

道阻且长,行则将至。 229

带洞多边形如何分成凸多边形集合,对多边形进行凸分解?

摘要: 凸分解是计算几何中的经典问题,分为三角化和凸分解两种方法。三角化将带洞多边形转换为简单多边形并分割为三角形,常用算法包括耳剪法、单调多边形三角化等。凸分解则生成更少但更大的凸多边形,常用Hertel-Mehlhorn算法或基于凹点的递归切割。实际应用中建议使用CGAL、Poly2Tri等成熟库处理。三角化适合图形渲染,凸分解更适用于物理引擎和路径规划。关键步骤包括数据校验、选择合适的算法及后处理优化。

插件开发 353

<蓝桥杯软件赛>零基础备赛20周--第4周--杂题-1

杂题-1

罗勇军的博客 1万+

WINCC7.3破解文件

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

<蓝桥杯软件赛>零基础备赛20周--第5周--杂题-2

杂题-2

罗勇军的博客 8801

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

蓝桥杯刷题合集

刷题合集 蓝桥杯刷题合集1.世纪末的星期 1.世纪末的星期

m0_55337136的博客 238

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

剑指Offer刷题合集

刷题合集 剑指Offer刷题合集1.二维数组中的查找 1.二维数组中的查找

m0_55337136的博客 141

不会题合集

现在不会不代表未来不会

Cat_cat_cat__的博客 172

算法刷题合集

刷题合集LeetCode剑指Offer蓝桥杯其他 LeetCode LeetCode刷题合集 剑指Offer 剑指Offer刷题合集 蓝桥杯 蓝桥杯刷题合集 其他 待更新

m0_55337136的博客 252

被学长安利的「宝藏Java场景题合集」,我面试三家拿了两个offer

先给各位码农同胞们科普下这个合集,里面全是BATJ等大厂真实场景题,从秒杀系统到分布式事务一网打尽,比网上那些八股文实用100倍。本人双非本科CS专业,只有一段中小厂实习经历,原以为秋招要凉,结果靠着学长给的场景题合集,面了3家就拿下2个offer(某二线厂18k。最绝的是每个题都有"故事线",比如"如果你是美团外卖架构师,如何设计优惠券系统"。我的策略是:用八股文通过技术面,用场景题征服架构师面。

sheep404的博客 699

公考刷题资源合集

weixin_53721706的博客 1698

HDLBits刷题合集—1 入门篇

HDLBits刷题 HDLBits-1 Step one 欢迎来到HDLBits ! 刚开始接触数字逻辑设计时,你可能会感到不知所措,因为你需要同时学习新的概念、新的硬件描述语言(例如Verilog)、几个新的软件包,通常还有一个FPGA板。HDLBits提供了一种方法来练习设计和调试简单的电路,只需单击“Simulate”即可。 设计一个电路需要几个步骤:编写HDL (Verilog)代码,编译代码生成电路,然后模拟电路并修复bug。 Writing Code 编写代码的最简单方法是在下面的“代码编辑器”

GitHDL的博客 4616

【杂题】【数论】[JZOJ5134] 三元组(无实现)

Description 求∑i=1A∑j=1B∑k=1C[(i,j)=1&amp;nbsp;and&amp;nbsp;(j,k)=1&amp;nbsp;and&amp;nbsp;(i,k)=1]∑i=1A∑j=1B∑k=1C[(i,j)=1&amp;nbsp;and&amp;nbsp;(j,k)=1&amp;nbsp;and&amp;nbsp;(i,k)=1]\sum\limits_{i=1}^{A}\sum\limits_{j=1}^{B}

Never give in. 362

【Python】Python判断语句经典题合集

Python入门——判断语句经典练习题例题合集。

zhousanguhe的博客 539

【Python】Python顺序语句经典题合集

Python顺序语句经典题合集

zhousanguhe的博客 939

其它刷题合集

[LeetCode刷题] 650. 只有两个键的键盘–Java实现 题目链接 https://leetcode-cn.com/problems/2-keys-keyboard/ 题目描述 最初记事本上只有一个字符 ‘A’ 。你每次可以对这个记事本进行两种操作: Copy All(复制全部):复制这个记事本中的所有字符(不允许仅复制部分字符)。 Paste(粘贴):粘贴 上一次 复制的字符。 给你一个数字 n ,你需要使用最少的操作次数,在记事本上输出 恰好 n 个 ‘A’ 。返回能够打印出 n 个 ‘A’

m0_55337136的博客 367
上一篇: 伯努利数
下一篇: 配对堆模板
扩展的灰
博客等级 码龄12年 60粉丝 342原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值