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          -3int 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_lkfreopen("in.txt","r",stdin);freopen("out.txt","w",stdout);
#endifint 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] 的情况的差  

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

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

相关文章

PDF盖骑缝章

在PDF文件上加盖骑缝章&#xff0c;您可以采取以下几种方法之一&#xff1a; 使用Adobe Acrobat&#xff1a; 打开Adobe Acrobat软件&#xff0c;加载PDF文件。在工具栏选择“工具”选项&#xff0c;找到“骑缝章”或“印章”工具。选择或上传您的骑缝章图片&#xff0c;将其放…

Dify数据库结构导出到PowerDesigner

即刻关注&#xff0c;获取更多 关注公众号 N学无止界 获取更多 Dify数据库结构导出到PowerDesigner Dify简介 Dify简介 欢迎使用 Dify Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务&#xff08;Backend as Service&#xff09;和 LLMOps 的理念&…

FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流

RTMP Streamer是一个安卓手机端的开源RTMP直播推流框架&#xff0c;可用于RTMP直播和RTSP直播&#xff0c;其升级版还支持SRT直播&#xff08;腾讯视频云就采用SRT协议&#xff09;。RTMP Streamer支持的视频编码包括H264、H265、AV1等等&#xff0c;支持的音频编码包括AAC、G7…

AI绘画Stable Diffusion【隐藏文字】:将艺术字隐藏在国风云雾山水图中

大家好&#xff0c;我是灵魂画师向阳 今天我们分享一下用AI绘画工具Stable Diffusion制作网上很火的隐藏文字。这里以将艺术字隐藏在国风云雾山水图为例进行讲解&#xff0c;下面我们就来看看吧。 一. 艺术字隐藏在国风云雾山水图中制作方法 【第一步】&#xff1a;制作底图…

使用Python爬取华为市场游戏类APP应用

文章目录 1. 写在前面2. 接口分析3. 爬虫开发4. 下载链接获取 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守…

uni-app实现页面通信EventChannel

uni-app实现页面通信EventChannel 之前使用了EventBus的方法实现不同页面组件之间的一个通信&#xff0c;在uni-app中&#xff0c;我们也可以使用uni-app API —— uni.navigateTo来实现页面间的通信。注&#xff1a;2.8.9 支持页面间事件通信通道。 1. 向被打开页面传送数据…

JavaScript笔记二-JavaScript基础语法

1、标识符 命名规则 第一个字符必须是一个字母、下划线&#xff08; _ &#xff09;或一个美元符号&#xff08; $ &#xff09;。其它字符可以是字母、下划线、美元符号或数字。按照惯例&#xff0c;ECMAScript 标识符采用驼峰命名法。标识符不能是关键字和保留字符。 2、字…

2022年全国职业院校技能大赛高职组“信息安全管理与评估”赛项第三阶段任务书

第三阶段竞赛项目试题 本文件为信息安全管理与评估项目竞赛-第三阶段试题。根据信息安全管理与评估项目技术文件要求&#xff0c;第三阶段为夺旗挑战CTF&#xff08;网络安全渗透&#xff09;。 本次比赛时间为180分钟。 介绍 夺旗挑战赛&#xff08;CTF&#xff09;的目标…

开发语言Java+前端框架Vue+后端框架SpringBoot开发的ADR药物不良反应监测系统源码 系统有哪些优势?

开发语言Java前端框架Vue后端框架SpringBoot开发的ADR药物不良反应监测系统源码 系统有哪些优势&#xff1f; ADR药物不良反应监测系统具有多个显著的优势&#xff0c;这些优势主要体现在以下几个方面&#xff1a; 一、提高监测效率与准确性&#xff1a; 通过自动化的数据收集…

在热力图基础上寻找所有峰值位置

文章目录 概要代码概要 理解热力图:首先,了解热力图是什么以及它代表了什么信息至关重要。热力图通常是二维的,其中每个像素的颜色表示该位置的数值大小。较亮的颜色通常表示较高的数值,而较暗的颜色表示较低的数值。 阈值处理:根据问题的要求,可能需要对热力图进行阈值处…

吴恩达2022机器学习专项课程C2W2:实验SoftMax

目录 Softmax函数1.简述2.Numpy实现softmax函数 softmax成本函数softmax应用于神经网络1.自定义数据集2.构建模型3.使用模型预测4.改良模型代码&#xff08;softmax转换输出&#xff09; Softmax函数 1.简述 在 Softmax 回归和带有 Softmax 输出的神经网络中&#xff0c;模型…

小程序如何更换营业执照

​因为商家经营业务的变更&#xff0c;尤其是之前的营业执照注销等原因&#xff0c;导致要求更换小程序主体。下面就具体介绍如何进行变更。 1. 登录mp.weixin.qq.com&#xff0c;找到设置->基本设置&#xff0c;在主体信息字段&#xff0c;点击小程序主体变更。主体变更分…

【运维项目经历|015】:Nginx Web服务性能提升与优化项目

目录 项目名称 项目背景 项目目标 项目成果 我的角色与职责 我主要完成的工作内容 本次项目涉及的技术 本次项目遇到的问题与解决方法 本次项目中可能被面试官问到的技术性问题 问题1&#xff1a;本次项目的人员配置&#xff1f; 问题2&#xff1a;本次项目的周期&am…

教学基本功包括什么技能有哪些

教师的工作不仅仅是传授知识&#xff0c;更多是引导学生探索&#xff0c;激发他们的创造力。要做到这一点&#xff0c;需要具备一些基本技能。 扎实的专业知识。这是教师的根基&#xff0c;如果教师自己对所教的科目都不熟悉&#xff0c;那么教学就会失去方向。不断学习更新自己…

基于python开发用于深度学习模型训练过程loss值曲线的平滑处理模块

深度学习网络模型的loss曲线是训练过程中非常重要的一个监控指标&#xff0c;它能够直观地反映模型的学习状态以及可能存在的问题。以下是对深度学习网络模型loss曲线的详细介绍&#xff1a; 一、loss曲线的基本概念 在深度学习的训练过程中&#xff0c;loss函数用于衡量模型…

0521_网络编程5

练习1&#xff1a; TFTP通信过程总结 服务器在69号端口等待客户端的请求服务器若批准此请求&#xff0c;则使用 临时端口 与客户端进行通信。每个数据包的编号都有变化&#xff08;从1开始&#xff09;每个数据包都要得到ACK的确认&#xff0c;如果出现超时&#xff0c;则需要…

骑车不戴头盔监测摄像机

骑行是一种健康的出行方式&#xff0c;但是在骑行途中不戴头盔存在安全隐患&#xff0c;容易造成头部受伤。为了规范骑行行为&#xff0c;保障骑行安全&#xff0c;可以考虑使用骑车不戴头盔监测摄像机进行监测和识别。这种摄像机可以通过智能识别技术&#xff0c;实时监测骑自…

装机数台,依旧还会心念i5-12600KF的性能和性价比优势:

近几个月的时间中&#xff0c; 装机差不多4台电脑&#xff0c;由于工作需要&#xff0c;计划年中再增添一台。 目前市场上英特尔CPU促销非常火爆&#xff0c;第12代、第13代以及第14代的产品在年中有适当的优惠。 年中也是装机的旺季&#xff0c;各种相关配件也相对便宜一些。…

PS系统教学02

多个图片同时进行打开 在素材库里面选中两张图片&#xff0c;直接拖进PS软件中&#xff0c;此时会显示其中一张。当按下回车键会显示另一张。 当图层过多&#xff0c;需要进行选择&#xff0c;其中某一张图片&#xff0c;按住Ctrl键&#xff0c;进行选择点击&#xff0c;可以移…

制造企业如何通过PLM系统实现BOM管理的飞跃

摘要 在当今快速变化的制造行业中&#xff0c;产品生命周期管理&#xff08;PLM&#xff09;系统的应用已成为企业提升效率、降低成本和增强竞争力的关键。本文将探讨PLM系统如何通过其先进的BOM&#xff08;物料清单&#xff09;管理功能&#xff0c;帮助制造企业在整个产品生…