研究生复试机试背诵自用

二刷 P3366 【模板】最小生成树 Kruskal模板 背诵

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#define MAXN 5005
#define MAXV 200005
using namespace std;
struct node{int u,v,w;
}edge[MAXV];int fa[MAXN];int n,m,ans=0;
int find(int x){if(x==fa[x]) return x;else return fa[x]=find(fa[x]);
}
void merge(int u,int v){fa[find(u)]=find(v);
}
bool cmp(node a,node b){return a.w<b.w;
}
void Kruskal(){sort(edge+1,edge+m+1,cmp);int line=0;for(int i=1;i<=m;i++){int to=edge[i].v;int f=edge[i].u;if(find(to)==find(f)) continue;merge(to,f);line++;ans+=edge[i].w;if(line==n-1){printf("%d",ans);return;}}printf("orz");return;//遍历完所有边 也选不出n-1条边 说明不连通 
}
int main(){scanf("%d%d",&n,&m);int id=0;for(int i=1;i<=m;i++){int a,b,c;scanf("%d%d%d",&a,&b,&c); edge[++id].u=a;edge[id].v=b;edge[id].w=c;}for(int i=1;i<=n;i++) fa[i]=i;Kruskal();return 0;
}

二刷 P3366 【模板】最小生成树 Prim算法模板背诵

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<queue>
//Prim最小生成树模板题
#define MAXN 5005
#define MAXV 400005 
#define INF 0x7fffffff
using namespace std;
struct node{int to;int weight;int next;
}edge[MAXV];int x=1;int head[MAXN];int n,m;
int dis[MAXN];bool visited[MAXN];int ans=0;
void add(int u,int v,int w){edge[x].to=v;edge[x].weight=w;edge[x].next=head[u];head[u]=x++;
}
void init(){scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int a,b,c;scanf("%d%d%d",&a,&b,&c);add(a,b,c);add(b,a,c);//无向图构建 }fill(visited,visited+MAXN,0);fill(dis,dis+MAXN,INF);
} 
struct priority{int id;int dist;friend bool operator < (priority a,priority b){return a.dist>b.dist;//小堆 }
};
priority_queue<priority> q;
void Prim(){dis[1]=0;q.push(priority{1,dis[1]});while(!q.empty()){priority tmp = q.top();q.pop();int tmpid=tmp.id;if(!visited[tmpid]){visited[tmpid]=1;ans+=dis[tmpid];for(int i=head[tmpid];i;i=edge[i].next){int targ=edge[i].to;int w = edge[i].weight;dis[targ]=min(dis[targ],w);if(!visited[targ]) q.push(priority{targ,dis[targ]});}}}for(int i=1;i<=n;i++)if(!visited[i]){printf("orz");return;}printf("%d",ans);
}
int main(){init();Prim();return 0;
}

二刷 P1443 马的遍历 BFS广搜 经典背诵

#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string.h>
#include<queue>
//#define inf 0x3f3f3f3f
using namespace std;
int n,m,x,y;
int pan[405][405];
int xx[]={0,-1,-2,-1,-2,1,2,1,2};
int yy[]={0,2,1,-2,-1,2,1,-2,-1};
queue<pair<int,int> >q;
//区分数学里(x,y)坐标 和数组中的[x][y]
void bfs(){pan[x][y]=0;q.push(make_pair(x,y));while(!q.empty()){int x0=q.front().first,y0=q.front().second;q.pop();if(x0<1||x0>n||y0<1||y0>m) continue;//错因 改半天 因为n和m顺序写反了可还行 for(int i=1;i<=8;i++){if(pan[x0+xx[i]][y0+yy[i]]==-1)pan[x0+xx[i]][y0+yy[i]]=pan[x0][y0]+1,q.push(make_pair(x0+xx[i],y0+yy[i]));	}}
} 
int main(){scanf("%d%d%d%d",&n,&m,&x,&y);fill(pan[0],pan[0]+405*405,-1);bfs();for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) printf("%d ",pan[i][j]);printf("\n"); }return 0;
}

二刷 P3371 【模板】单源最短路径(弱化版) Dijkstra模板背诵

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define MAXN 20005
#define MAXV 1000005
#define INF 0x3f3f3f3f
#include<queue>
using namespace std;
struct node{int to;int weight;int next;
}edge[MAXV];int head[MAXN];int x=1;bool visited[MAXN];int dis[MAXN];
int n,m,s; 
void add(int u,int v,int w){edge[x].to=v;edge[x].weight=w;edge[x].next=head[u];head[u]=x++;
}
void init(){scanf("%d%d%d",&n,&m,&s);for(int i=1;i<=m;i++){int a,b,c;scanf("%d%d%d",&a,&b,&c);add(a,b,c);}fill(visited,visited+MAXN,0);fill(dis,dis+MAXN,INF);
}
struct priority{int id;int dist;friend bool operator < (priority a,priority b){return a.dist>b.dist;//小堆 }
};
priority_queue<priority> q;
void Dijkstra(){dis[s]=0;q.push(priority{s,dis[s]});while(!q.empty()){priority tmp=q.top();q.pop();int tmpid=tmp.id;if(!visited[tmpid]){visited[tmpid]=1;for(int i=head[tmpid];i;i=edge[i].next){int targ=edge[i].to;if(dis[targ]>dis[tmpid]+edge[i].weight){dis[targ]=dis[tmpid]+edge[i].weight;if(!visited[targ]) q.push(priority{targ,dis[targ]});}}}}
}
int main(){init();Dijkstra();for(int i=1;i<=n;i++){if(dis[i]!=INF) printf("%d ",dis[i]);else cout<<0x7fffffff<<" ";//有符号数 32比特 占用31比特为数值 则最大为2的31次方-1为最大数值 0111111111111111 } return 0;
}

二刷 P1123 取数游戏 dfs深搜经典背诵

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int T,n,m;int a[8][8];int con[8][8];//用于统计位置的空闲 
int maxs=0;int tmpmax=0;
int xx[]={0,-1,-1,-1,0,0,1,1,1};
int yy[]={0,1,0,-1,1,-1,1,0,-1};
void dfs(int x,int y){if(x>n){maxs=max(maxs,tmpmax);return;}if(y==m) dfs(x+1,1); else dfs(x,y+1);if(con[x][y]==0){for(int i=1;i<=8;i++) con[x+xx[i]][y+yy[i]]++;tmpmax+=a[x][y];if(y==m) dfs(x+1,1); else dfs(x,y+1);for(int i=1;i<=8;i++) con[x+xx[i]][y+yy[i]]--;tmpmax-=a[x][y];//回溯 }
}
int main(){scanf("%d",&T);for(int t=1;t<=T;t++){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&a[i][j]);fill(con[0],con[0]+8*8,0);tmpmax=0,maxs=0;dfs(1,1);printf("%d\n",maxs);}return 0;
}

二刷 P1048 [NOIP2005 普及组] 采药 动态规划背包01问题

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#define MAXN 1005
using namespace std;
//01背包问题模板
int T,M;int times[MAXN];int values[MAXN];
int dp[MAXN][MAXN];//dp[i][j] 考虑前i个物品,时间容量为j时 最大价值 
//bool visited[MAXN];int maxvalue=0;
int dp2[MAXN];
void init(){scanf("%d%d",&T,&M);for(int i=1;i<=M;i++) scanf("%d%d",&times[i],&values[i]);for(int i=0;i<=T;i++) dp[0][i]=0;for(int i=0;i<=M;i++) dp[i][0]=0; //fill(visited,visited+MAXN,0);
} 
void GetDp2(){ //不需要记录选项的时候 可以直接用一维数组表示重量部分T 物品部分M用循环替代 减少空间复杂度dp2[0]=0;for(int i=1;i<=M;i++)for(int j=T;j>=0;j--){if(times[i]>j) dp2[j]=dp2[j];else dp2[j]=max(dp2[j],dp2[j-times[i]]+values[i]); } 	
}
void GetDp(){for(int i=1;i<=M;i++)for(int j=1;j<=T;j++){if(j<times[i]) dp[i][j]=dp[i-1][j];else dp[i][j]=max(dp[i-1][j],dp[i-1][j-times[i]]+values[i]);}
}
int main(){init();//GetDp();GetDp2();//int tmp=M;int bagleft=T;
//	while(M>=0){//获得选项的方法 如果只要结果 就不需要visited和这个步骤 
//		if(dp[M][bagleft]!=dp[M-1][bagleft]){
//			visited[M]=1;maxvalue+=times[M];
//			bagleft-=times[M];
//		}
//		M--; 
//	}//printf("%d",maxvalue);//printf("%d",dp[M][T]);printf("%d",dp2[T]);return 0;
}

二刷 KMP算法 next版本背诵专用 匹配所有位置

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
//KMP算法背诵版 匹配所有位置 
int main(){string a,b;//a为初试串 b为目标串getline(cin,a);getline(cin,b);int len=a.length();int next[len+1];//接下来获得next数组int i=0,j=-1;next[0]=-1;while(i<=int(b.length())){if(j==-1||b[i]==b[j]) ++i,++j,next[i]=j;else j=next[j];}//接下来进行匹配 i=0,j=0;while(i<=int(a.length())&&j<=int(b.length())){if(j==-1||a[i]==b[j]) ++i,++j;else j=next[j];if(j>=int(b.length())) j=next[j],printf("位置是%d\n",i-int(b.length())+1);}return 0;
}

★★★P1629 邮递员送信 Flyod算法实现 可背 vctor邻接表 多源最短路径

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#define INF 0x3f3f3f3f
#include<vector>
using namespace std;
//Flyod算法模板改(这题用Dijkstra更合适 仅为了测试Flyod) 正向为单源最短 回来是多源最短 
vector<vector<int>>cost;//代价矩阵 邻接表存储图 
//vector<vector<int>>path;//路径矩阵
//洛谷 c++11 o2优化 AC 
int n,m,ans=0;
void Flyod(){for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){if(cost[i][k]!=INF&&cost[k][j]!=INF&&cost[i][j]>cost[i][k]+cost[k][j]){cost[i][j]=cost[i][k]+cost[k][j];//path[i][j]=k;}}
}
int main(){scanf("%d%d",&n,&m);cost.resize(n+1,vector<int>(n+1,INF)); //resize方法 v.resize(n) 将v的大小改成n v.resize(n,value) 将v的大小改成n 且元素为value for(int i=1;i<=m;i++){int a,b,c;scanf("%d%d%d",&a,&b,&c);//cost[a][b]=c;//单行路 cost[a][b]=min(cost[a][b],c);}for(int i=1;i<=n;i++) cost[i][i]=0; Flyod();for(int i=2;i<=n;i++) ans=ans+cost[1][i]+cost[i][1];printf("%d",ans);return 0;
}

二刷 P1308 [NOIP2011 普及组] 统计单词数

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
string a,b;
int main(){getline(cin,a);getline(cin,b);int ans=0;for(int i=0;i<a.length();i++) a[i]=tolower(a[i]);for(int j=0;j<b.length();j++) b[j]=tolower(b[j]);a=' '+a+' ';b=' '+b+' ';if(b.find(a)==string::npos){printf("-1");return 0;}int tmp1=b.find(a);int tmp2=tmp1;while(tmp2!=string::npos){ans++;tmp2=b.find(a,tmp2+1);}printf("%d %d",ans,tmp1);return 0;
}

二刷 NUST 15-T7 训练map+set+vector容器的使用

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<map>//至少的两个元素 
#include<set>//一个元素 也可以用pair变成两个 
#include<vector>
using namespace std;
bool cmp(pair<int,int> a,pair<int,int> b){return a.second>b.second;//递减排序 
}
int main(){//set<pair<int,int>> a;map<int,int> mp;while(1){int x;scanf("%d",&x);if(x==-1) break;mp[x]++;}//map不可以排序 用vector//map的访问可以直接用数组方式 而pair的访问是.first 和.second //使用到迭代器以后 访问一律使用->first和->second printf("各元素及其出现次数:\n");for(map<int,int>::iterator a=mp.begin();a!=mp.end();a++){printf("%d:%d",a->first,a->second);a++;if(a!=mp.end()) printf(",");a--;}vector<pair<int,int> >s;for(map<int,int>::iterator a=mp.begin();a!=mp.end();a++)s.push_back(make_pair(a->first,a->second));//接下来 放入vector后进行排序 按照次数从大到小排序 sort默认是递增 而堆排序默认是递减sort(s.begin(),s.end(),cmp);printf("\n排序结果:\n");for(vector<pair<int,int>>::iterator a=s.begin();a!=s.end();a++){printf("%d:%d",a->first,a->second);if(a+1!=s.end()) printf(",");}return 0;
}

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

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

相关文章

OpenLayers基础教程——WebGLPoints图层样式的设置方法

1、前言 前一篇博客介绍了如何在OpenLayers中使用WebGLPoints加载海量数据点的方法&#xff0c;这篇博客就来介绍一下WebGLPoints图层的样式设置问题。 2、样式运算符 在VectorLayer图层中&#xff0c;我们只需要创建一个ol.style.Style对象即可&#xff0c;WebGLPoints则不…

浅谈Webmail邮件还原

Webmail还原&#xff0c;其实也就是HTTP协议的还原&#xff0c;而HTTP协议的还原&#xff0c;核心部分是TCP会话的重组。在TCP会话进行重组之后&#xff0c;再对重组的报文进行HTTP解析&#xff0c;得到Webmail中相应的信息。 由于每个邮件服务商实现Webmail的方式都各不相同&a…

LabVIEW智能降噪系统

LabVIEW智能降噪系统 随着噪声污染问题的日益严重&#xff0c;寻找有效的降噪技术变得尤为关键。介绍了一种基于LabVIEW平台开发的智能降噪系统&#xff0c;该系统能够实时采集环境噪声&#xff0c;并通过先进的信号处理技术实现主动降噪&#xff0c;从而有效改善生活和工作环…

CV论文--2024.3.26

1、DiffusionMTL: Learning Multi-Task Denoising Diffusion Model from Partially Annotated Data 中文标题&#xff1a;DiffusionMTL&#xff1a;从部分注释的数据中学习多任务去噪扩散模型 简介&#xff1a;最近&#xff0c;人们对于从部分标注数据中学习多个密集场景理解任…

qt table 简易封装,样式美化,以及 合并表格和颜色的区分 已解决

在需求中&#xff0c; 难免会使用 table 进行渲染窗口&#xff0c;做一个简单的封装。美化表格最终效果&#xff01;&#xff01;&#xff01; 代码部分 // 显示 20行 20列CCendDetailsInfoTableWidget* table new CCendDetailsInfoTableWidget(20,10);for (int i 0; i < …

【AIGC调研系列】DeepSeek模型的优势和劣势

DeepSeek模型的优势主要包括&#xff1a; 多模态能力&#xff1a;DeepSeek-VL能够在不丢失语言能力的情况下融入多模态能力&#xff0c;能够处理包括逻辑图、网页、公式识别、科学文献、自然图像等多种类型的数据&#xff0c;显示出其强大的通用多模式理解能力[1]。高分辨率图…

实现浏览器复制文本原始样式到wps或office

一、概述 本需求是笔者在协助公司前端工程师的一个需求完成的&#xff0c;需求是在Web页面中复制带有样式的文本并期望在WPS或其他富文本编辑器中保持样式&#xff0c;通常需要使用HTML格式进行复制。大多数现代富文本编辑器&#xff0c;包括WPS&#xff0c;都支持从HTML格式的…

蓝桥杯2023年第十四届省赛真题-买瓜|DFS+剪枝

题目链接&#xff1a; 0买瓜 - 蓝桥云课 (lanqiao.cn) 蓝桥杯2023年第十四届省赛真题-买瓜 - C语言网 (dotcpp.com) &#xff08;蓝桥官网的数据要求会高一些&#xff09; 说明&#xff1a; 这道题可以分析出&#xff1a;对一个瓜有三种选择&#xff1a; 不拿&#xff0c…

Hbase解决ERROR: KeeperErrorCode = ConnectionLoss for /hbase/master报错

在使用hbase时出错&#xff0c;错误如下图&#xff1a; 错误原因&#xff1a; 返回去检查启动的Hadoop与zookeeper&#xff0c;发现zookeeper的状态不对&#xff0c;重新启动了一下zookeeper&#xff0c;确保所有机器的zookeeper都启动起来了就可以了。

微服务(基础篇-004-Feign)

目录 http客户端Feign Feign替代RestTemplate&#xff08;1&#xff09; Feign的介绍&#xff08;1.1&#xff09; 使用Feign的步骤&#xff08;1.2&#xff09; 自定义配置&#xff08;2&#xff09; 配置Feign日志的两种方式&#xff08;2.1&#xff09; Feign使用优化…

【C++】哈希应用之位图

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.位图的概念 2.位…

解决“Pycharm中Matplotlib图像不弹出独立的显示窗口”问题

matplotlib的绘图的结果默认显示在SciView窗口中, 而不是弹出独立的窗口, 这样看起来就不是很舒服&#xff0c;不习惯。 通过修改设置&#xff0c;改成独立弹出的窗口。 File—>Settings—>Tools—>Python Scientific—>Show plots in toolwindow 将√去掉即可

初识C++(三)构造函数和析构函数

目录 一、构造函数&#xff1a; 1.构造函数的概念&#xff1a; 2.构造函数的特性&#xff1a; 3.构造函数的形式&#xff1a; 4.为什么要引出构造函数这一概念 5.默认构造函数包括&#xff1a; 6.对默认生成的构造函数不处理内置类型的成员这事的解决办法&#xff1a; …

【Python机器学习系列】skearn机器学习模型的保存---pickle法

这是我的第246篇原创文章。 一、引言 pickle是Python 的标准库&#xff0c;用于序列化对象。可以使用 pickle.dump()将模型保存到文件&#xff0c;然后使用 pickle.load()从文件中加载模型。 序列化&#xff1a;指将一个对象转换为字节流&#xff0c;能够存储在文件或网络上&…

HTML快速入门笔记

一、HTML快速入门 说明&#xff1a;所有加*号内容代表不常用&#xff0c;了解即可。 HTML概述 超文本&#xff1a;Web是一个超文本的集合&#xff1b;超文本是web的基本组成单元&#xff0c;也成为网页或HTML文档&#xff0c;Web页等&#xff0c;通常以.html或.htm为后缀的文件…

Apache SeaTunnel 初识

文章目录 Apache SeaTunnel 初识为什么我们需要SeaTunnel使用场景特点解决的问题工作流连接器输入插件过滤插件输出插件引擎spark 和 flink 引擎SeaTunnel 引擎集群管理核心功能Apach

力扣1----10(更新)

1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按…

计算机网络:现代通信的基石

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

「Linux系列」Linux网络通讯/系统管理/系统设置/备份压缩/设备管理命令

文章目录 一、Linux网络通讯命令二、Linux系统管理命令三、Linux系统设置命令四、Linux备份压缩命令五、Linux设备管理命令六、相关链接 一、Linux网络通讯命令 Linux网络通讯命令是Linux系统中用于管理和调试网络功能的一系列工具。这些命令可以帮助用户查看网络状态、测试网…

SNMP学习笔记SNMPWALK命令

SNMPWALK是SNMP的一个工具&#xff0c;它使用SNMP的GETNEXT请求查询指定OID入口的所有OID树信息&#xff0c;并显示给用户。 IT监控系统常用snmpwalk获取支持SNMP的网络设备信息&#xff0c;使用snmpwalk收集交换机、路由器的CPU、内存、端口流量等信息。 使用snmpwalk需要安装…