大连理工大学(开发区校区)2023年新生赛(验题人题解)

news2025/1/16 5:10:52

难度分布

根据排行榜情况,大致分布如下:

Easy:AIDE

Middle:CJF

Hard:GBH

题解

A. Hello World.(题意实现)

直接输出Hello world.

I. lgl想签到(题意实现)

统计周一到周六晚上同时学习和打游戏的天数

周日同时学习和打游戏会导致下周一迟到,不计入本周

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],cnt,c;
int main(){
	//while(cin>>a[++c]);
	//assert(c==15);
	for(int i=1;i<=14;++i)cin>>a[i];
    for(int i=1;i<7;++i){
		if(a[i]==1 && a[i+7]==1)cnt++;
	}
	cout<<cnt<<endl;
	return 0;
}

D. 位数相加(思维,规律)

记一个数i迭代若干次之后,最终得到的个位数的结果是g(i)

打表发现,g(i)呈1、2、3、4、5、6、7、8、9的循环分布

所以一定是1>=2,只需判断g(n)=1是否成立,g(n)=1说明1多一个,否则相等

而注意到n%9也呈0、1、2、3、4、5、6、7、8的循环分布,且g(1)%9=1%9

所以,要判断g(n)=1,只需判断n%9=1是否成立即可

#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
	cin>>n;
	assert(1<=n && n<=1000000000);
	if(n%9==1)cout<<"1>2";
	else cout<<"1=2";
	return 0;
}
/*
#include<bits/stdc++.h>
using namespace std;
int n;
int f(int x){
	int ans=0;
	for(;x>0;x/=10)ans+=x%10;
	return ans;
}
int main(){
	cin>>n;
	assert(1<=n && n<=1000000000);
	while(n/10)n=f(n);
	if(n==1)cout<<"1>2";
	else cout<<"1=2";
	return 0;
}
*/

E. 沙(思维)

按题意,先把x=1和x=n这两个元素去掉,不统计,剩余n-2个元素

1. 如果k=1,可以单点加,则可以令其中一半上取整个,使之满足要求

2. 如果k>=2,设操作了至少一次,且同时操作了a[i]和a[i-1],令其+1,

再比较a[i]和a[i-1]+a[i+1]的大小时,发现a[i]-(a[i-1]+a[i+1])不变,

如果同时操作了a[i]、a[i-1]、a[i+1],发现a[i]-(a[i-1]+a[i+1])变得更小了,

所以不如不操作,直接统计初始局面的合法元素个数

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,k,a[N],cnt;
int main(){
	cin>>n>>k;
	assert(3<=n && n<=100000);
	assert(1<=k && k<=n);
	for(int i=1;i<=n;++i){
		cin>>a[i];
		assert(0<=a[i] && a[i]<=1000000000);
	}
	if(k==1){
		n-=2;
		cout<<(n+1)/2<<endl;
		return 0;
	}
	for(int i=2;i<n;++i){
		if(a[i]>a[i-1]+a[i+1]){
			cnt++;
		}
	}
	cout<<cnt<<endl;
	return 0;
}

C. 深度学习(题意实现)

按照题面描述模拟即可,

分类讨论了一下补一圈0的情况

#include<bits/stdc++.h>
using namespace std;
const int N=105+10;
int m,x,y,p,a[N][N],b[N][N];
int main(){
	cin>>m>>x>>y>>p;
	assert(3<=m && m<=100);
	assert(1<=x && x<=100);
	assert(1<=y && y<=100);
	assert(0<=p && p<=1);
	if(p==1){
		m+=2;
		for(int i=2;i<m;++i){
			for(int j=2;j<m;++j){
				cin>>a[i][j];
				assert(0<=a[i][j] && a[i][j]<=30);
			}
		}
	}
	else{
		for(int i=1;i<=m;++i){
			for(int j=1;j<=m;++j){
				cin>>a[i][j];
				assert(0<=a[i][j] && a[i][j]<=30);
			}
		}
	}
	for(int i=1;i<=x;++i){
		for(int j=1;j<=y;++j){
			cin>>b[i][j];
			assert(0<=b[i][j] && b[i][j]<=30);
		}
	}
	for(int i=1;i+x-1<=m;++i){
		for(int j=1;j+y-1<=m;++j){
			int cnt=0;
			for(int k=i;k<=i+x-1;++k){
				for(int l=j;l<=j+y-1;++l){
					cnt+=a[k][l]*b[k-i+1][l-j+1];
				}
			}
			cout<<cnt;
			if(j+y-1==m)cout<<endl;
			else cout<<" ";
		}
	}
	return 0;
}

J. lgl学图论(最短路)

最短路 - OI Wiki板子题,用dijkstra跑1号点出发的单源最短路即可,

数据范围1e6,需要堆优化,注意图可能不连通,注意重边和自环

#include<bits/stdc++.h> 
using namespace std;
typedef pair<int,int> P;
const int N=1e6+10,INF=0x3f3f3f3f;
int n,m,u,v,w,dis[N];
bool vis[N];
vector<P>e[N];
struct Q{
    int d,u;
    Q(){}
    Q(int dd,int uu):d(dd),u(uu){}
};
bool operator<(Q a,Q b){
    return a.d>b.d;
}
priority_queue<Q>q;
void dijkstra(int s){
    memset(dis,INF,sizeof dis);
    q.push(Q(0,s));
    dis[s]=0;
	while(!q.empty()){
		Q z=q.top();q.pop();
        int d=z.d,u=z.u;
        if(vis[u])continue;
        vis[u]=1;
        for(auto &x:e[u]){
            int v=x.first,w=x.second;
            if(dis[v]>dis[u]+w){
                dis[v]=dis[u]+w;
                q.push(Q(dis[v],v));
            }
        }
    }
}
signed main(){
    scanf("%d%d",&n,&m);
	assert(1<=n && n<=1000000);
    assert(1<=m && m<=1000000);
    for(int i=1;i<=m;++i){
        scanf("%d%d%d",&u,&v,&w);
        assert(1<=u && u<=n);
        assert(1<=v && v<=n);
        assert(1<=w && w<=1000);
        if(u==v)continue;
        e[u].push_back(P(v,w));
        e[v].push_back(P(u,w));
    }
    dijkstra(1);
    for(int i=1;i<=n;++i){
        printf("%d%c",dis[i]==INF?-1:dis[i]," \n"[i==n]);
    }
	return 0;
}

F. 瞄准(数论)

欧拉函数板子题,

注意到答案除了(1,1)点以外,其他点是关于直线y=x对称的

所以可以统计某一半的答案,记为ans,则最终答案为2*ans+1

不妨统计直线y=x以下部分(y<x)的答案,

如果两个(x,y)的点的斜率相同,则只能被统计一次,

换言之,需要满足被统计到答案内的y/x,是最简分数,

且注意到被统计的那一次x和y互质,即统计:

1+\sum_{x=1}^{n}\sum_{y=1}^{x-1}[gcd(x,y)==1]

其中,额外加上的1,是(1,0)这个点

根据欧拉函数定义,这就是:

\sum_{i=1}^{n}\phi(n)

所以,预处理欧拉函数及其前缀和,对于每个询问O(1)回答即可

1e6,用线性筛或者类似埃筛的O(nlogn)写法均可通过

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+10,mod=998244353;
bool ok[N];
int t,n,prime[N],phi[N],cnt;
void sieve(){ 
    phi[1]=1;
	for(ll i=2;i<N;++i){
		if(!ok[i]){
			prime[cnt++]=i;
			phi[i]=i-1;
		}
		for(int j=0;j<cnt;++j){
			if(i*prime[j]>=N)break;
			ok[i*prime[j]]=1;
			if(i%prime[j]==0){
				phi[i*prime[j]]=phi[i]*prime[j];//prime[j]是i的因子 prime[j]的素因子项包含在i的素因子项里
				break; 
			}
			else phi[i*prime[j]]=phi[i]*(prime[j]-1);//prime[j]与i互质 phi[i*prime[j]=phi[i]*phi[prime[j]]
		}
	}
	for(int i=2;i<N;++i){
		phi[i]=(phi[i-1]+phi[i])%mod;
	}
}
int main(){
	sieve();
	cin>>t;
	assert(1<=t && t<=1000000);
	while(t--){
		cin>>n;
		assert(1<=n && n<=1000000);
		int ans=(2ll*phi[n]+1)%mod;
		cout<<ans<<endl;
	}
	return 0;
}

G. 魔方物品(动态规划)

分两种情况,即打折和不打折,

如果打折的话,最优的操作是把某一个魔法物品最后放入,让前面的物品都打折

1. 不打折,直接做完全背包

2. 打折,对体积>=C的物品做一次01背包,表示必取的最后一个物品,然后再对所有物品做体积为6/7的完全背包,表示前面取的物品

注意此时由于体积>=C的物品必取,前驱只能从做过01背包的值转移而来,

这里由于每个物品的val>0,就只能从>0的dp值转移而来

看了出题人的题解,最后一个物品枚举就行了,做什么01背包

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e4+10,M=1e6+10;
int n,v,c,a[N],b[N];
ll dp[M],ans;
int main(){
	cin>>n>>v>>c;
	assert(1<=n && n<=10000);
	assert(1<=c && c<=v && v<=1000000);
	ll w=1ll*n*v;
	assert(1<=w && w<=10000000);
	for(int i=1;i<=n;++i){
		cin>>a[i]>>b[i];
		assert(7<=a[i] && a[i]<=10000);
		assert(a[i]%7==0);
		assert(1<=b[i] && b[i]<=1000000);
		for(int j=a[i];j<=v;++j){
			dp[j]=max(dp[j],dp[j-a[i]]+b[i]);
		}
	}
	ans=dp[v];
	memset(dp,0,sizeof dp);
	for(int i=1;i<=n;++i){
		if(a[i]>=c){
			for(int j=v;j>=a[i];--j){
				dp[j]=max(dp[j],dp[j-a[i]]+b[i]);
			}
		}
	}
	for(int i=1;i<=n;++i){
		a[i]/=7;a[i]*=6;
		for(int j=a[i];j<=v;++j){
			if(dp[j-a[i]]>0)dp[j]=max(dp[j],dp[j-a[i]]+b[i]);
		}
	}
	ans=max(ans,dp[v]);
	cout<<ans<<endl;
	return 0;
}

B. 恐怖的期末考试月(思维 二分/逆序贪心)

本题是Codeforces Round #808 (Div. 2) C题的减弱版,可以二分或逆序考虑

做法1(二分):

如果q>=n显然全取,否则最终智商一定为0,

而{第i天减1,后面提前减为0,导致最后的有一些不选},

显然是不如{把第i天减1的机会往后挪,这样有可能能有更多的可以选},

所以,可以二分天数x,即二分找到这样的最小的第x天,

使得第[1,x)天需要降智的不选,不需要降智的选,

而第[x,n]天全选,该降智就降智,这些天里恰能把q次降智机会都用完,

用不完就向更小的天数二分,直到q次能用完,或者x=1。

做法2(逆序贪心):

如果q>=n显然全取,否则最终智商一定为0,显然降的机会发生在后面是更优的。

逆序看待这个过程,把顺序的降认为是逆序的升,顺序的不操作认为是逆序的不操作,

就可以直接贪心了,初始智商0,能升智就升智,因为这样天数越小,智商越高。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,q,a[N],now,cnt;
int main(){
	cin>>n>>q;
	assert(1<=n && n<=100000);
	assert(1<=q && q<=1000000000);
	for(int i=1;i<=n;++i){
		cin>>a[i];
		assert(0<=a[i] && a[i]<=1000000000);
	}
	if(q>=n){
		cout<<n<<endl;
		return 0;
	}
	for(int i=n;i>=1;--i){
		if(a[i]>now){
			if(now<q)now++,cnt++;
		}
		else{
			cnt++;
		}
	}
	cout<<cnt<<endl;
	return 0;
}

H. Robot(动态规划/线段树)

xjb乱搞搞过去了,评价是不如直接看出题人的题解

注意到走法只有以下三种情况,

而后两种情况,需要在每个决策点(如:(0,0),(0,2),etc...)的时候都要考虑

换言之,走法一定由两部分组成,左半段蛇形走位(可能为空),右半段直线走位(可能为空)

考虑每个点(i,j)对最终时间的独立的贡献,是a[i][j]+1+走完(i,j)之后走的点的个数

由于会因为一些点block住,最终的时间一定是所有点的贡献取max

基于此,有两种做法,可以求出直线走位,即后半程的点的贡献的最大值

1. dp是倒着预处理,只考虑第i列及其往右的部分,

从右往左递推出,第i列一头作为起止点,另一头作为终点的最早扫完时间

因为是直线走位,a[0][i]作为起止点,则a[1][i]为终点,反之同理,维护两个dp数组

2. 而线段树是正着硬莽,从左往右暴力扫

维护的信息与上面dp的相同,求出i列一头作为起止点,另一头作为终点的最早扫完时间

因为蛇形一次走两列,所以求第i+2列的答案的时候,需要对当前第i列的答案暴力区间减2

开了两棵线段树,单点赋值,区间减,区间求max

从左往右,枚举蛇形走位和直线走位的分界点,

蛇形走位的部分模拟即可,即先等到可以走的时候,cur=max(cur,a[i][j]),再走,cur++

后半直线走位的部分,用预处理的dp值,或用线段树现查的结果,

时间是前半段走完和后半段走完的max,于所有可能性中取最短时间,即为答案

写了一个半小时,不过感觉当个压轴题还可以,没脑子,没想到用dp

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+10;
int m,a[2][N],ans=2e9,cur;
struct segtree{
	int n;
	struct node{int l,r,v,c;}e[N<<2];
	#define l(p) e[p].l
	#define r(p) e[p].r
	#define v(p) e[p].v
	#define c(p) e[p].c
	void up(int p){v(p)=max(v(p<<1),v(p<<1|1));}
	void bld(int p,int l,int r){
		l(p)=l;r(p)=r;
		if(l==r){v(p)=c(p)=0;return;}
		int mid=l+r>>1;
		bld(p<<1,l,mid);bld(p<<1|1,mid+1,r);
		up(p);
	}
	void psd(int p){
		if(c(p)){
			v(p<<1)+=c(p);
			c(p<<1)+=c(p);
			v(p<<1|1)+=c(p);		
			c(p<<1|1)+=c(p);
			c(p)=0; 
		}
	}
	void init(int _n){n=_n;bld(1,1,n);}
	void chg(int p,int x,int v){
		if(l(p)==r(p)){v(p)=v;return;}
		int mid=l(p)+r(p)>>1;
		psd(p);
		chg(p<<1|(x>mid),x,v);
		up(p);
	}
	void add(int p,int ql,int qr,int v){
		if(ql>qr)return;
		if(ql<=l(p)&&r(p)<=qr){
			v(p)+=v;
			c(p)+=v;
			return;
		}
		psd(p);
		int mid=l(p)+r(p)>>1;
		if(ql<=mid)add(p<<1,ql,qr,v);
		if(qr>mid)add(p<<1|1,ql,qr,v);
		up(p);
	}
	int ask(int p,int ql,int qr){
		if(ql>qr)return 0;
		if(ql<=l(p)&&r(p)<=qr)return v(p);
		int mid=l(p)+r(p)>>1,res=0;
		psd(p);
		if(ql<=mid)res=max(res,ask(p<<1,ql,qr));
		if(qr>mid)res=max(res,ask(p<<1|1,ql,qr));
		return res;
	}
}seg,seg2;
int main(){
	cin>>m;
	assert(1<=m && m<=100000);
	seg.init(2*m);
	seg2.init(2*m);
	for(int i=0;i<2;++i){
		for(int j=0;j<m;++j){
			cin>>a[i][j];
			assert(0<=a[i][j] && a[i][j]<=1000000000);
			if(!i && !j){
				assert(!a[0][0]); 
				continue;
			}
			//cout<<"i:"<<i<<" j:"<<j<<endl;
			if(!i){
				seg.chg(1,j+1,a[i][j]+2*m-j);//第j+1个,当前及后面还有2m-j个,二者和为2*m+1,下同
				seg2.chg(1,2*m+1-j,a[i][j]+j);
				//cout<<"v1:"<<j+1<<" "<<a[i][j]+2*m-j<<endl;
				//cout<<"v2:"<<2*m+1-j<<" "<<a[i][j]+j<<endl;
			}
			else{  
				seg.chg(1,2*m-j,a[i][j]+j+1);//第2m-j个,当前及后面还有j+1个
				seg2.chg(1,j+2,a[i][j]+2*m-1-j);
				//cout<<"v1:"<<2*m-j<<" "<<a[i][j]+j+1<<endl;
				//cout<<"v2:"<<j+2<<" "<<a[i][j]+2*m-1-j<<endl;
			}
			
		}
	}
	for(int i=0;i<m;i+=2){
		int t=cur+2*(m-i)-1;
		//cout<<"i:"<<i<<" t0:"<<t<<endl;
		t=max(t,min(seg.ask(1,i+2,2*m-i),seg2.ask(1,i+2,2*m-i)));
		//cout<<"i:"<<i<<" t1:"<<t<<endl;
		ans=min(ans,t);
		cur=max(cur,a[1][i]),cur++;
		if(i+1<m)cur=max(cur,a[1][i+1]),cur++;
		if(i+1<m)cur=max(cur,a[0][i+1]),cur++;
		if(i+2<m)cur=max(cur,a[0][i+2]),cur++;
		if(i+2>=m)break;
		seg.add(1,i+2,2*m-i,-2);
		seg2.add(1,i+2,2*m-i,-2);
	}
	//cout<<"cur:"<<cur<<endl;
	ans=min(ans,cur);
	cout<<ans<<endl;
	return 0;
}

个人感受

验题人(×)赛中开管理员号同步做题的(√)

感觉思维题居多,码量较小,

一些知识点(如:数论、最短路等)也有考察,有一些板子题,比较适合新生赛

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

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

相关文章

组件优化 - 多project方案

背景 经销商项目目前是混合项目&#xff0c;有oc、swift、flutter&#xff0c;并对应各自的一些三方库&#xff0c;并随着需求的增加&#xff0c;项目代码体积也越来越大&#xff0c;编译速度也相应的慢了很多&#xff0c;这也严重影响了开发速度&#xff0c;故目前的期望是可…

Linux:git工具

文章目录一.git的下载二.如何使用git将代码传到远端仓库2.1在gitee上新建一个仓库2.2克隆仓库到本地git clone2.3将文件添加到本地仓库git add2.4将代码提交到本地仓库git commit -m2.5将本地仓库的内容传到远端仓库中git push三.git的一些其它使用3.1git log查看日志3.2git rm…

【魅力开源】第5集:通过Odoo实现将EXCEL表费用明细,快速导入到ERP总账系统生成凭证

文章目录前言一、拿到这样的一张表二、实现过程1. 控制器(Controller)2. 模型(Model)3. 视图(View)4. 返回生成的凭证号最后前言 这是一个小功能。 财务小姐姐每个月需要不少的时间去手录费用凭证&#xff0c;这个功能可以实现将半天一天时间内完成的事情&#xff0c;在1小时内…

204:vue+openlayers 学习Attribution各种API,示例展示自定义版权信息

第204个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayers项目中个性化修改版权信息,这里主要涉及到Attribution各种属性的设置,所以这里先列出属性的信息,然后用示例来展示如何使用。 名称类型说明classNamestring (默认为“ol-attribution”)CSS 类名。targetH…

Acwing---1219.移动距离

移动距离1.题目2.基本思想3.代码实现1.题目 X星球居民小区的楼房全是一样的&#xff0c;并且按矩阵样式排列。 其楼房的编号为 1,2,3… 当排满一行时&#xff0c;从下一行相邻的楼往反方向排号。 比如&#xff1a;当小区排号宽度为 6 时&#xff0c;开始情形如下&#xff1a…

使用Anaconda(3-5.1.0对应 python3.6.3)搭建OpenCV(3.5.1.15)环境和Jupyter Notebook

使用Anaconda搭建python和OpenCV环境1、 Anaconda3-5.1.0下载Anaconda3-5.1.0下载链接&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载 Anaconda3-5.1.0-Windows-x86_64.exe 对应 python3.6.32、安装Anaconda全程下一步&#xff0c;修改了一下默认安装…

如何学习C++图像处理?

学习C图像处理前首先的明确图像处理是什么&#xff0c;它是如何定义的&#xff1f;它能给我们带来哪些便利&#xff1f;之后根据需求选择合适的编程语言&#xff0c;C or python&#xff1f;图像处理(image processing)&#xff0c;用计算机对图像进行分析&#xff0c;以达到所…

你还不知道怎么实现财富自由吗?一篇文章手把手教你入门!

程序猿作为互联网行业的翘楚&#xff0c;压力多多收获也多多。 如果想在上班之余还有外快拿&#xff0c;最好的方法就是利用业余时间做做兼职赚外快&#xff0c;不仅可以充实自己的钱包&#xff0c;还可以磨练自己的技术&#xff0c;一举两得。 找外快可是一门技术活&#xf…

三万秃发人群撑起一个IPO,大麦植发能成功上市吗?

不断壮大的“脱发”大军正撑起植发这一条黄金赛道。据弗若斯特沙利文报告&#xff0c;2020年中国毛发医疗服务的市场规模已达到184亿元&#xff0c;预计到2030年将达到1381亿元&#xff0c;CAGR为22.3%。 由于市场规模增长较快&#xff0c;资本也加强了对植发行业的关注&#…

python实现给pdf文件加骑缝章效果

骑缝章是在合同上经常看到的一种盖章方式&#xff0c;如下图所示。现在电子合同的应用已经越来越广泛&#xff0c;合同上如何实现骑缝章的效果 &#xff0c;也是有必要研究一下的。本文几乎Python的方式&#xff0c;讲述了如果对印章图片进行处理&#xff0c;然后&#xff0c;实…

JAVA校园闲置物品交易系统源码+数据库,为在校师生提供闲置物品发布、物品查询、物品交易等功能

校园闲置平台 校园闲置物品交易系统&#xff0c;为在校师生提供闲置物品发布、物品查询、物品交易等功能。 使用JAVA编写的(javaweb和ssm) Summary 项目的技术栈项目功能介绍项目运行环境部署项目 项目的技术栈 IoC容器:Spring web框架:SpringMVC (PHP版为ThinkPHP) orm…

不会数学的程序员,只能走到初级开发工程师!

作者&#xff1a;小傅哥 博客&#xff1a;https://bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 在我还是初级程序员时&#xff0c;每天也都粘贴着代码和包装着接口。那个阶段并没有意识到数学能在编程中起到什么作用&#xff…

【Java基础】-【集合类】

目录Java中的容器&#xff08;集合类&#xff09;Java中的容器&#xff0c;线程安全和线程不安全的分别有哪些&#xff1f;Map接口的实现类Map put的过程如何得到一个线程安全的Map&#xff1f;HashMap的特点JDK7和JDK8中的HashMap有什么区别&#xff1f;HashMap底层的实现原理…

【年度总结】2022回首瞻望 | 2023大展宏“兔“

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计专业大二本科在读&#xff0c;阿里云社区专家博主&#xff0c;华为云社区云享专家&#xff0c;CSDN SAP应用技术领域新兴创作者。   在学习工…

GO语言配置和基础语法应用(三)

C语言是直接影响Go语言设计的语言之一。 Go是一门编译型语言&#xff0c;Go语言的工具链将源代码及其依赖转换成计算机的机器指令&#xff08;译注&#xff1a;静态编译&#xff09;。 package mainimport "fmt"func main() {fmt.Println("Hello, 世界")…

一行代码加速Pytorch推理速度6倍

一行代码加速Pytorch推理速度6倍 Torch-TensorRT 是 PyTorch 的集成&#xff0c;它利用 NVIDIA GPU 上的 TensorRT 推理优化。 只需一行代码&#xff0c;它就提供了一个简单的 API&#xff0c;可在 NVIDIA GPU 上提供高达 6 倍的性能加速。 话不多说, 线上代码, 再解释原理!!…

【论文精读】Scaling distributed machine learning with the parameter server

Scaling distributed machine learning with the parameter server前言Abstract1. Introduction1.1 Contributions1.2 Engineering Challenges1.3 Related Work2. Machine Learning2.1 Goals2.2 Risk Minimization2.3 Generative Models3. Architecture3.1 (Key,Value) Vectors…

设计模式简要汇总

一、面向对象设计原则 开闭原则&#xff1a;一个软件实体&#xff08;类、模块、函数&#xff09;应该对扩展开放&#xff0c;对修改关闭。依赖倒置原则&#xff1a;高层模块不应该依赖底层模块&#xff0c;它们都应该依赖于抽象。抽象不应该依赖于细节&#xff0c;细节应该依…

语义分割——FCN模型pytorch实现

FCN网络简介 全卷积网络&#xff08;Fully Convolutional Networks&#xff0c;FCN&#xff09;是Jonathan Long等人于2015年在Fully Convolutional Networks for Semantic Segmentation一文中提出的用于图像语义分割的一种框架&#xff0c;是首个端对端的针对像素级预测的全卷…

BIGEMAP APP离线卫星地图数据应用

离线包&#xff08;高清卫星图&#xff09;&#xff1a; 1、一次下载永久可用&#xff0c;访问更快&#xff0c;下载更快 2、离线包数据可自动更新&#xff0c;无需重新下载&#xff0c;更新3到6个月一次 3、离线包可在无网络离线环境下使用&#xff0c;不受网络限制 4、离线包…