2024.5.29晚训参考代码

因为本套题没有BFS例题,所以我先把BFS模板放着

#include<bits/stdc++.h>
using namespace std;
int n,m;//n*m的棋盘 
int dis[402][402]; 
bool vis[402][402];
int X[]={-2,-2,-1,-1,1,1,2,2};//偏移量的表 
int Y[]={-1,1,-2,2,-2,2,-1,1};//定义一个数组,我直接把这些元素从0位置填充进去 
struct node{
	int x;
	int y;
	int dis;//从起点走到当前(x,y)的最短步数 
};
int st,ed;//起点x  y坐标 
void bfs(){  
	queue<node>q;
	node now;
	now.x=st;
	now.y=ed;
	now.dis=0;
	q.push(now);//放入队列,第一个搜索的状态 dfs(st,ed,0)  
	while(!q.empty()){
		//第一步取出队首状态
		//第二步,弹出队首 
		//第三步  判断当前状态是不是已经走过了   后面再来到这个点肯定不是最短距离
		//仅限于所有距离都一样的情况   
		//第四步   判断当前的点是不是终点 
		//第五步  打标记
		//第六步  做相关的数据统计  比如记录(now.x,now.y)的最小步数  
		//第七步  以这个点拓展出去的其余状态  注意判断非法情况   
	}
	//bfs结束 
}
signed main(){
	int x,y;
	cin>>n>>m;
	cin>>st>>ed;
	//memset(dis,-1,sizeof(dis));//初始化数组    
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			dis[i][j]=1e9;//表示不可到达  
		}
	}//dis[i][j]表示从起点走到(i,j)的最短距离 
	bfs();
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
		//	dis[i][j]=1e9;//表示不可到达  
			if(dis[i][j]==1000000000)cout<<-1;
			else cout<<dis[i][j];
			cout<<" ";
		}
		cout<<'\n';
	}
	return 0;
}

马的便利  
#include<bits/stdc++.h>
using namespace std;
struct node{
	int x;
	int y;
	int dis;//从起点走到(x,y)的距离 
}; 
int n,m,x,y;
int X[]={-1,-1,-2,-2,1,1,2,2};
int Y[]={2,-2,-1,1,2,-2,1,-1};
int dis[405][405];
int vis[405][405];
void bfs(){
	queue<node>q;
	node now;
	now.x=x;
	now.y=y;
	now.dis=0;
	q.push(now);
	while(!q.empty()){
		node now=q.front();
		q.pop();
		if(vis[now.x][now.y]==1){
			continue;//已经走过这个点了  
		}
		dis[now.x][now.y]=now.dis;
		vis[now.x][now.y]=1;
		node cnt;
		for(int i=0;i<8;i++){
			cnt.x=now.x+X[i];
			cnt.y=now.y+Y[i];
			cnt.dis=now.dis+1;
			if(cnt.x<1||cnt.x>n||cnt.y<1||cnt.y>m)continue;
			q.push(cnt);
		}
	}
}
int main(){
	cin>>n>>m>>x>>y;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			dis[i][j]=-1;
		}
	}
	bfs();
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cout<<dis[i][j]<<"  ";
		}
		cout<<'\n';
	}
	return 0;
}

在这里插入图片描述
需要考虑记忆化处理

#include<bits/stdc++.h>
using namespace std;
#define int long long 
int vis[30][30];
int n,m,s,b;
int dfs(int x,int y){
	if(x<0||y<0)return 0;
	if((x==s&&y==b)||(x==s-1&&y==b-2)||(x==s-2&&y==b-1)||(x==s-2&&y==b+1))return 0;
	if((x==s-1&&y==b+2)||(x==s+1&&y==b+2)||(x==s+2&&y==b+1)||(x==s+2&&y==b-1)||(x==s+1&&y==b-2))return 0;
	if(x==0&&y==0)return 1;
	if(vis[x][y])return vis[x][y];
	return vis[x][y]=dfs(x-1,y)+dfs(x,y-1);	
}
signed main() {
	cin>>n>>m>>s>>b;
	cout<<dfs(n,m);
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
char A[1005];
char B[1005];
int dp[1005][1005];
int main(){
	int n,m;
	cin>>n>>m;
	cin>>A+1>>B+1;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(A[i]==B[j]){
				dp[i][j]=dp[i-1][j-1]+1;
			}
			else{
				dp[i][j]=max(dp[i-1][j-1],max(dp[i-1][j],dp[i][j-1]));
			}
		}
	}
	cout<<dp[n][m];
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
long long dp[100005][2];
int main() {
	int n;
	cin>>n;
	//dp[0][0]=dp[0][]
	//dp[i][0] 没抢i银行  
	for(int i=1;i<=n;i++){
		long long x;
		cin>>x;
//		cout<<i<< "  ";
		dp[i][0]=max(dp[i-1][0],dp[i-1][1]);//没抢 
		dp[i][1]=dp[i-1][0]+x; 
//		cout<<dp[i][0]<<" "<<dp[i][1]<<'\n';
	}
	cout<<max(dp[n][0],dp[n][1]);
	return 0;
}

在这里插入图片描述
物品只拿一次,01背包

#include<bits/stdc++.h>
using namespace std;
int V[1005],W[1005];// 
int dp[1005];
//有一大堆财宝,体积分别是V[i]  价值是W[i]  
//你现在有一个体积为M的包,你想知道怎么样拿 能保证  在背包容量的限制下 拿到最多价值的财宝   
signed main(){
    //总背包容量10   
	//只考虑拿价值高的    价值是10,体积是10     可能有其他财宝价值5  体积1  有若干个    
	//dfs(拿/不拿)  暴力   n<=20  
	/*背包dp   01背包   
	dp[i][j]  表示处理完前i个物品 有j的容量  
	单独考虑处理第i个物品,那么是不是跟dp[i-1][] + 如何处理第i个物品=> dp[i][]  有关联 
	如果第i个物品你要拿 
	因为你拿了第i个物品,体积变大,变成了dp[i][j]  
	dp[i][j] = dp[i-1][j-V[i]] + W[i] 
	如果我们不拿第i个物品  变到了dp[i][j]  
	dp[i][j] =dp[i-1][j]  
	?????我们的容量j  
	
	dp[i][j] =max(dp[i-1][j],dp[i-1][j-V[i]]+W[i]);  
	    // j=?+V[i] 
	 */
	 int M,n;
	 cin>>M>>n;//M是总体积  n是物品个数   
	 for(int i=1;i<=n;i++){
	 	cin>>V[i]>>W[i];//输入体积  和  价值  
	 }
	for(int i=1;i<=n;i++){
		for(int j=M;j>=V[i];j--){
			dp[j]=max(dp[j],dp[j-V[i]]+W[i]);
		}
	}
	cout<<dp[M];
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
long long T,M,t[10001],v[10001],dp[10000001];
int main(){
	cin>>T>>M;
	for(int i=1;i<=M;i++)
		cin>>t[i]>>v[i];
	for(int i=1;i<=M;i++)
		for(int j=t[i];j<=T;j++)
			dp[j]=max(dp[j],dp[j-t[i]]+v[i]);
    cout<<dp[T];
    return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int dp[305][305];
int w[305];
int sum[305];
signed main(){
    /* 考虑区间dp 
	 dp[l][r]= 表示把[L,R]的石头合并成一堆所需要的最小花费   
	 
	 考虑转移
	 1 1 1 1 1 1 1
	 所有大的区间一定由小区间转移 
	 考虑合并成长度为2的区间
	// dp[i][i+1]=(dp[i][i]+dp[i+1][i+1])+w[i]+w[i+1] 
	 合并成3区间  来自于长度为2 + 拼长度为1  
	 长度为4的区间  1+3  2+2  3+1  .... 
	 考虑dp[l][r] 拆成两个区间,进行合并  */
	 int n;
	 cin>>n;
	 for(int i=1;i<=n;i++){
	 	cin>>w[i];
	 	sum[i]=sum[i-1]+w[i];//前缀和 
	 }

	  for(int len=1;len<=n;len++){	 
		
		for(int i=1;i<=n;i++){
	 	    //i作为区间起点
		 	//枚举区间长度
			//计算右端点在哪
			int j=i+len;
			dp[i][j]=1e9;
			if(j>n)break; 
		 	for(int k=i;k<j;k++){
		 		dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]);
			 }
		 }	
	 } 
	  cout<<dp[1][n];
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int n;
int minx = 0x3f3f3f3f,maxn = -1;
int s[305];
int m[305];
int dp1[305][305];
int dp2[305][305];
int main()
{
	cin >> n;
	for(int i = 1; i <= n; i++){
		cin >> m[i];
		m[i + n] = m[i];
	}
	memset(dp1,0x3f3f3f3f,sizeof(dp1));
	memset(dp2,-1,sizeof(dp2));
	for(int i = 1; i <= n * 2; i++){
		s[i] = s[i - 1] + m[i];
		dp1[i][i] = 0;
		dp2[i][i] = 0;
	}
	for(int i = 2; i <= n; i++){
		for(int l = 1; l <= n * 2 - i + 1; l++){
			int r = l + i - 1;
			for(int j = l; j < r; j++){
				dp1[l][r] = min(dp1[l][r],dp1[l][j] + dp1[j + 1][r]);
				dp2[l][r] = max(dp2[l][r],dp2[l][j] + dp2[j + 1][r]);
			}
			dp1[l][r] += (s[r] - s[l - 1]);
			dp2[l][r] += (s[r] - s[l - 1]);
		}
	}
	for(int i = 1; i <= n; i++){
		minx = min(minx,dp1[i][i + n - 1]);
		maxn = max(maxn,dp2[i][i + n - 1]);
	}
	cout << minx << "\n" << maxn;
	return 0;
}

在这里插入图片描述
注意输出格式啊。。。。注意数据类型 long long

#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[1005][1005];
long long sum[1005][1005];
int main() {
	cin >> n >> m;
	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= m; j++) {
			cin >> a[i][j];
		}
	}
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= m; j++) {
			sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + a[i][j];
		}
	}
	int q; cin >> q;
	while(q--) {
		int X1, Y1, X2, Y2;
		cin >> X1 >> Y1 >> X2 >> Y2;
		cout << sum[X2][Y2] - sum[X1 - 1][Y2] - sum[X2][Y1 - 1] + sum[X1 - 1][Y1 - 1] << '\n';
	}
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int a[100005];
long long int pre[100005];
long long int sum[100005];
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
    {
        scanf("%d",&a[i]);
        pre[i]=a[i]-a[i-1];
    }

//1   2   3   4   5
//+2      -2
//+3          -3
    int m;
    scanf("%d",&m);
    while(m--)
    {
        int l,r,x;
        scanf("%d%d%d",&l,&r,&x);
        pre[l]+=x;
        pre[r+1]-=x;
    }
    int st,ed;
    scanf("%d%d",&st,&ed);
    long long int ans=0;
    long long int cnt=0;
    for(int i=1;i<=n;i++){
        sum[i]=sum[i-1]+pre[i];
    }

    for(int i=st; i<=ed; i++)
    {
        ans+=sum[i];

    }

    printf("%lld",ans);

}

在这里插入图片描述

#include<bits/stdc++.h>
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define all(x) x.begin(),x.end()
using namespace std;
const double eps=1e-8;
const double PI=acos(-1.0);
typedef long long ll;
template<class T>int chkmin(T &a,T b){return a>b?a=b,1:0;}
template<class T>int chkmax(T &a,T b){return a<b?a=b,1:0;}
template<class T>T sqr(T a){return a*a;}
template<class T>T mmin(T a,T b){return a<b?a:b;}
template<class T>T mmax(T a,T b){return a>b?a:b;}
template<class T>T aabs(T a){return a<0?-a:a;}
#define min mmin
#define max mmax
#define abs aabs
int a[1024][1024];
int main(){
#ifdef cnyali_lk
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
#endif
    int n,m,xa,ya,xb,yb;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;++i){
        scanf("%d%d%d%d",&xa,&ya,&xb,&yb);
        ++a[xa][ya];
        --a[xb+1][ya];
        --a[xa][yb+1];
        ++a[xb+1][yb+1];
    }
    for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)printf("%d%c",a[i][j]+=a[i-1][j]+a[i][j-1]-a[i-1][j-1],j==n?'\n':' ');
    return 0;
}

在这里插入图片描述

答案   A【1+ 枚举i=2~n 里面所有的A[i]>A[i-1] 的情况的差  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我给线程池管理框架hippo4j找bug

1 虚拟机参数不生效 hippo4j的docker启动脚本位于 docker/docker-startup.sh 。从下图可以看到 JAVA_OPT放在了jar包名 hippo4j-server.jar之后&#xff0c;而只有项目参数才放在jar包名之后。 实际上这里JAVA_OPT中包含虚拟机参数&#xff0c;而虚拟机参数要放在jar包名之前…

【SpringMVC】_简单示例计算器

目录 1. 需求分析 2. 接口定义 3. 请求参数 4. 响应数据 5. 服务器代码 6. 前端页面代码 7. 运行测试 为阶段性总结与应用&#xff0c;现将以Spring MVC项目创建一个可以实现加法的计算器为例 1. 需求分析 加法计算器功能&#xff0c;对两个整数进行相加&#xff0c;需…

微软Edge浏览器深度解析:功能、同步、隐私与安全

微软Edge浏览器是微软公司开发的一款网页浏览器,它基于Chromium内核,提供了快速、安全和兼容性良好的网页浏览体验。以下是关于微软Edge浏览器的详细信息和使用指南: 微软Edge浏览器的主要特点: 1. 基于Chromium内核: 渲染引擎:Chromium内核是基于开源项目Blink的,它…

Android Notes

maven 版本发布 1、小于 AGP7 使用 maven 插件 apply plugin: maven uploadArchives {repositories {mavenDeployer {pom.groupId GROUP_IDpom.artifactId ARTIFACT_IDpom.version VERSION//正式版本repository(url: RELEASE_URL) {authentication(userName: userName, p…

【学习】自动化测试与单元测试框架的差异化解析

在软件开发的世界中&#xff0c;质量保证是构建可靠、健壮应用程序的关键一环。在这个过程中&#xff0c;自动化测试和单元测试框架是确保代码质量的两种重要工具。尽管它们在目标上有着共同点——提高软件测试的效率和有效性&#xff0c;但它们在应用场景、功能特点以及实现方…

【康耐视国产案例】智能AI相机机器视觉精准快速实现包裹标签的智能粘贴

康耐视推出的3D-A1000是专业的、匹配物流行业各类分拣机及包裹检测应用的全功能视觉检测系统&#xff0c;其能够准确检测分拣机上是否有包裹、包裹是否超出边界、空车检测、是否有遗留物品等。由于搭载了专利的三维结构光技术&#xff0c;产品具有更强大的创新性以满足持续更新…

2024ciscn初赛——easycms

什么是CMS&#xff1f; CMS是“Content Management System”的缩写&#xff0c;意为“内容管理系统”。网站的开发者为了方便&#xff0c;制作了不同种类的CMS&#xff0c;可以加快网站开发的速度和减少开发的成本。 常见的CMS&#xff1a; php类cms系统&#xff1a;dedecms、…

2024年人文发展与社会科学国际会议(ICHDSS 2024)

2024年人文发展与社会科学国际会议 2024 International Conference on Humanities Development and Social Sciences 【1】会议简介 2024年人文发展与社会科学国际会议是一个汇集全球人文科学和社会科学领域专家学者的盛会。本次会议旨在深入探讨人文发展的多元性、复杂性以及社…

做外贸,怎么选国外服务器?

不管是新手还是外贸老司机&#xff0c;大家都知道要用海外服务器来做外贸网站&#xff0c;无论外贸独立站的客户是欧美、东南亚、还是非洲&#xff0c;都不能选择国内机房的服务器&#xff0c;必须选择海外服务器&#xff0c;这是共识。 但是今天&#xff0c;我要告诉大家一个…

【Linux】Git超详细教程:手把手教你(gitee版)--版本管理+远程仓库克隆(初学者必看!!!)

目录 一、前言 二、git 的深度理解 &#x1f95d; 什么是 git ? &#x1f347; git 的历史发展&#xff08;理解 git 的由来&#xff09; &#x1f34b; 感性理解 git 的版本管理 三、git 的安装 ✨Window 终端安装 ✨Linux 安装 四、git 的工作流程 五、如何在 Linux …

宝塔 nginx 配置负载均衡 upstream

nginx 主配置文件加入 upstream myapp1 {server 192.168.124.101:5051;server 192.168.124.102:5052;server 192.168.124.111:5050;}站点配置文件中加入 location / {proxy_pass http://myapp1;}80端口映射到外网域名配置方法 加入红框中的代码 upstream myapp3 {server 192.16…

金融创新浪潮下的拆分盘投资探索

随着数字化时代的步伐加速&#xff0c;金融领域正经历着前所未有的变革。在众多金融创新中&#xff0c;拆分盘作为一种新兴的投资模式&#xff0c;以其独特的增长机制&#xff0c;吸引了投资者的广泛关注。本文将对拆分盘的投资逻辑进行深入剖析&#xff0c;并结合具体案例&…

不是从APP store下载的APP在mac上一直提示有损坏,打不开怎么办?

1.点击设置 2.安全与隐私 3.通用看看允许从以下位置下载的APP是否有任何来源 4.如果没有&#xff0c;mac桌面点击&#x1f50d;输入终端或Terminal 命令行输入下述代码&#xff1a; sudo spctl --master-disable 5.回车&#xff0c;输入mac开机密码。注意&#xff1a;此时密…

Java实战入门:深入解析Java中的 `Arrays.sort()` 方法

文章目录 一、方法定义参数说明返回值 二、使用场景三、实现原理四、示例代码示例一&#xff1a;对整型数组排序示例二&#xff1a;对字符串数组排序示例三&#xff1a;对自定义对象数组排序 五、注意事项六、总结 在Java编程中&#xff0c;Arrays.sort() 方法是一个非常常用的…

msvcp140.dll是什么东西?如何修复电脑提示msvcp140.dll丢失的多种方法

文件名为 msvcp140.dll&#xff0c;这是一个动态链接库&#xff08;DLL&#xff09;文件&#xff0c;属于Microsoft Visual C 2015 Redistributable的一部分。全称为 "Microsoft C Runtime Library" 或 "Microsoft C Runtime Library"&#xff0c;表明该文…

第22讲:文件操作

文章目录 第22讲&#xff1a;文件操作1. 为什么使用文件2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名 3. 二进制文件和文本文件&#xff1f;4. 文件的打开和关闭4.1 流和标准流4.1.1 流4.1.2 标准流 4.2 文件指针4.3 文件的打开和关闭 5. 文件的顺序读写5.1 顺序读写函数介…

ChatGPT Edu版本来啦:支持GPT-4o、自定义GPT、数据分析等

5月31日&#xff0c;OpenAI在官网宣布&#xff0c;推出ChatGPT Edu版本。 据悉&#xff0c;这是一个专门为大学校园提供的ChatGTP&#xff0c;支持GPT-4o、网络搜索、自定义GPT、数据分析、代码生成等功能&#xff0c;可以极大提升学生、老师的学习质量和教学效率。 目前&…

RocketMq broker源码解析

broker 集群工作流程 NameSrv启动成功后&#xff0c;等待broker、Consumer和producer启动后也与NameSrv保持长连接, NameSrv相当于是路由控制中心。启动broker, broker与所有的NameSrv建立长连接, broker&#xff0c;通过定时线程定时向NameSrv发送心跳&#xff0c;broker信息…

OpenCV引入QT编译

OpenCV引入QT编译 为什么要引入QT编译编译方式 Reference: OpenCV 配置选项参考文档 网上实在找不到对应教程&#xff0c;在此做个记录。 为什么要引入QT编译 在没引入QT前&#xff0c;没有上述工具栏。 可以显示当前像素位置的像素值。 可以缩放查看每一个像素的大小。这对…

docker 快速搭建django项目环境(DockerFile)文件基础搭建

首先需要搭建好docker环境&#xff0c;docker环境就不在这里叙述&#xff0c;如果想学在评论区留言小编后期更新由linux系统到docker的安装做一个详细的教程。 下面我们开始今天的重点&#xff1a; 1、第一步&#xff1a;我们在任意&#xff08;linux&#xff09;路径下创建Do…