蓝桥杯 总结经典基础题型

 十进制转R进制

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;string tentoR(int x, int r) {if (x == 0) return "0"; // 如果x为0,直接返回"0"string s;while (x) {int num = x % r;if (num >= 10) s += 'A' + (num - 10); // 处理10及以上的数字转为字母else s += num + '0'; // 处理0-9的数字x /= r;}reverse(s.begin(), s.end()); // 反转字符串得到正确的顺序return s;
}int main() {int n, r;cin >> n >> r;cout << tentoR(n, r);return 0;
}

计算一个数转为二进制后有几个1  

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;int calebinone(int x)
{int cnt = 0;while (x){cnt++;x &= x - 1;//每次将最后一个1变为0 }return cnt;
}int main()
{int n;cin >> n;cout << calebinone(n);}

异或(^)相同为0,不同为1

最大公约数和最小公倍数(递归版本)

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;int gcd(int a, int b) // 最大公约数
{return b == 0 ? a : gcd(b, a % b);
}int lcm(int a, int b) // 最小公倍数
{return a / gcd(a, b) * b;
}int main()
{int a, b;cin >> a >> b;cout << "最大公约数是:" << gcd(a, b) << endl;cout << "最小公倍数是:" << lcm(a, b) << endl;return 0;
}

日期(闰年)

显示某一年的日历

#include<iostream>
using namespace std;int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};// 检查是否为闰年
bool check(int year) {if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)return true;return false;
}int main() {int y;cin >> y;// 根据年份调整二月天数if(check(y))days[2] = 29;elsedays[2] = 28; // 确保处理多个年份时对于非闰年,二月的天数正确设置为28天for(int i = 1; i <= 12; i++) { // 十二个月for(int j = 1; j <= days[i]; j++) cout << y << "年" << i << "月" << j << "日" << endl;}return 0;
}

判断素数(试除法&埃氏筛) 

#include<iostream>
#include<string>
#include<cmath>
#include<algorithm>
#define int long long 
using namespace std;
//单个素数判定--试除法 O(sqrt(n))
bool isprime(int n)
{if(n<=1) return false;int sqrtn=sqrt(n);for(int i=2;i<=sqrtn;i++){if(n%i==0)return false;}return true;
}
//多个素数判定--埃氏筛O(nloglogn) 
//找到一个素数把他的倍数全筛出 
#include<vector>
const int N=1e6+10;
bool vis[N];//标记一个数是否为素数 
vector<int> prime;//素数表 void E_sieve()
{vis[0]=vis[1]=1;//提前处理1和2为非素数 for(int i=2;i<=N-10;i++){if(!vis[i])//是素数{for(int j=2*i;j<=N-10;j+=i){vis[j]=1;}} } 
}signed main()
{int n;cin>>n;cout<<"素数有:"<<endl;E_sieve();for(int i=2;i<=n;i++){
//		if(isprime(i))
//			cout<<i<<" ";if(!vis[i])cout<<i<<" ";}for(auto it:prime) {if(it>n) break;cout<<it<<" "; }return 0;
} 

 计算a的b次方的模运算 

#include<iostream>
using namespace std;int main()
{int a,b,mod;cin>>a>>b>>mod;int ans=1;for(int i=1;i<=b;i++){ans*=a%mod;ans%=mod;} cout<<ans;return 0;
}

前缀和

一维前缀和查询区间和
//一维前缀和 
#include<iostream>
#include<algorithm>
using namespace std;const int N=1e6+10;
int a[N],ps[N]; 
int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];ps[i]=ps[i-1]+a[i];}int m;//查询m次区间和 cin>>m;while(m--){int l,r;cin>>l>>r;cout<<ps[r]-ps[l-1]<<endl;} return 0;
}
 二维前缀和查询矩阵和(最大子矩阵问题)
#include<iostream>
using namespace std;
const int N=1e3+10;
int a[N][N],ps[N][N]; 
int main(){int n; cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a[i][j];ps[i][j]=ps[i-1][j]+ps[i][j-1]-ps[i-1][j-1]+a[i][j];} }int m; cin>>m;while(m--){int r1,c1,r2,c2;  cin>>r1>>c1>>r2>>c2;cout<<ps[r2][c2]-ps[r1-1][c2]-ps[r2][c1-1]+ps[r1-1][c1-1]<<endl;}return 0;
}

搜索与回溯

全排列模板
#include<iostream>
using namespace std;string s;
const int N=1e2+10;
char ch[N];
bool vis[N];
void dfs(int dep){//5.终止条件 if(dep==s.size()+1){for(int i=1;i<dep;i++){cout<<ch[i];} cout<<endl;return ;}//1.枚举搜索方案for(int i=0;i<s.size();i++){//2.标记-防止重复搜索if(!vis[i]){//3.搜索 vis[i]=1;//标记ch[dep]=s[i];//记录第dep层搜了谁 dfs(dep+1);//进入下一层继续搜索 //4.回溯vis[i]=0; } } 
}
int main(){cin>>s; //abcdfs(1);return 0;
}
迷宫搜索-bfs求无权图最短路 
#include<iostream>
#include<queue>
using namespace std;const int N=1e3+10;
char g[N][N];//迷宫数组
bool vis[N][N];//标记数组
int n,m,sx,sy,tx,ty,ans=-1;
//方向数组
int dx[]={0,0,1,-1},dy[]={1,-1,0,0}; 
struct point{int x,y,step;}; 
void bfs(point s){queue<point> q;//1.起点入队+标记q.push(s);  vis[s.x][s.y]=1;//2.循环广搜while(!q.empty()){//3.取出当前正在搜索的点 point cur=q.front();  q.pop();//判断是否是终点 if(cur.x==tx&&cur.y==ty){ans=cur.step;return ;} //4.沿着邻接点继续搜索for(int i=0;i<4;i++){int bx=cur.x+dx[i],by=cur.y+dy[i];if(bx<1||bx>n||by<1||by>m) continue;if(g[bx][by]=='*') continue;if(vis[bx][by]) continue;q.push({bx,by,cur.step+1});vis[bx][by]=1;} } 
}
int main(){cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>g[i][j];cin>>sx>>sy>>tx>>ty;bfs({sx,sy,0});cout<<ans<<endl;return 0;
}
***图论- 有权图多源最短路Floyd
#include<iostream>
#include<climits>
#include<algorithm>
using namespace std;
const int N = 3e3 + 10, INF = INT_MAX;
int g[N][N];//邻接矩阵
bool vis[N];//标记数组
int mindis[N][N];//含义:mindis[i][j]顶点i到顶点j的最短距离
int n = 2021, s = 1;
int gcd(int a, int b) {return b == 0 ? a : gcd(b, a % b);
}
int lcm(int a, int b) {return a / gcd(a, b) * b;
}
//时间复杂度O(n^3)
void floyd() {//枚举跳板(中转点)for (int k = 1; k <= n; k++) {//枚举任意两点for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {if (mindis[i][k] != INF && mindis[k][j] != INF) {if (mindis[i][k] + mindis[k][j] < mindis[i][j]) {mindis[i][j] = mindis[i][k] + mindis[k][j];}}}}}
}
int main() {fill(mindis[0], mindis[0] + N * N, INF);for (int i = 1; i <= n; i++) {for (int j = max(i - 21, 1); j <= min(i + 21, 2021); j++) {if (i != j) mindis[i][j] = mindis[j][i] = lcm(i, j);}}//floyd();//cout << mindis[1][n] << endl;cout << 10266837 << endl;return 0;
}

DP 

最长上升子序列
#include<iostream>
using namespace std;
//最长上升子序列-LIS
//1.状态  dp[i] 以第i个元素作为结尾的最长上升子序列的长度
//2.状态转移方程  if(a[j]<a[i]) dp[i]=max(dp[i],dp[j]+1)//a  1 2 3 4 5 6 7
//   1 7 3 5 9 4 8//dp 1 2 3 4 5 6 7
//   1 2 2 3 4 3 4
const int N = 1e3 + 10;
int a[N], dp[N];
int main() {int n;  cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];dp[i] = 1;//边界,每一个元素自身构成最长上升}int mx = 1;for (int i = 2; i <= n; i++) {//使用j遍历第i个元素之前的所有元素for (int j = 1; j < i; j++) {//找到a[j]和a[i]构成上升的情况if (a[j] < a[i]) dp[i] = max(dp[i], dp[j] + 1);}mx = max(mx, dp[i]); }cout << mx << endl;return 0;
}

STL

List链表(大量的对头尾进行操作时使用)
#include<iostream>
#include<list>
using namespace std;int main()
{list<int>ls;if (!ls.empty()) {ls.pop_back();//移除列表的最后一个元素ls.pop_front();//移除列表的第一个元素 }ls.push_back(10);//列表的末尾添加一个元素ls.push_front(5);//列表的开头添加一个元素// 打印列表中的所有元素for (int elem : ls) {cout << elem << " ";}cout << endl;return 0;
}
String字符串 
#include<iostream>
#include<algorithm>
using namespace std;int main(){string s1, s2;getline(cin, s1);getline(cin, s2);s1 += s2; // 拼接if (s1 == s2) { // 比较cout << "s1 and s2 are equal." << endl;}s1 = s2; // 拷贝//查找子串 if(s1.find(s2)!=-1){cout<<s2<<" is substr of "<<s1<<endl;}while((pos=s1.find(s2,pos))!=-1){pos++;cnt++;//统计子串数量 }reverse(s1.begin(), s1.end()); // 反转s1// 类型转换示例string numStr = to_string(123); // 整数转字符串int num = stoi(s2); // 字符串转整数double dnum = stod(s2); // 字符串转双精度浮点数long lnum = stol(s2); // 字符串转长整型return 0;
}
stack栈
#include<iostream>
#include<stack>
using namespace std;int main(){stack<int> st;int n; cin>>n;for(int i=1;i<=n;i++){int x; cin>>x;st.push(x);}while(!st.empty()){cout<<st.top()<<" ";st.pop();}return 0;
}
queue队列
#include<iostream>
#include<queue>
using namespace std;
int main(){queue<int> q;int n; cin>>n;for(int i=1;i<=n;i++){int x; cin>>x;q.push(x);}while(!q.empty()){//注意是front()cout<<q.front()<<" ";q.pop();}return 0;
}
set(去重++排序)
#include<iostream>
#include<set>
using namespace std;int main(){set<int> s;int n; cin>>n; for(int i=1;i<=n;i++){int x; cin>>x;//插入元素用inserts.insert(x);//底层是红黑树 O(logn) }for(auto it:s) cout<<it<<" ";return 0;
}
map(针对key去重+排序  )
#include<iostream>
#include<map>
using namespace std;
//STL-map
int main(){map<int,string> mp;int n; cin>>n; for(int i=1;i<=n;i++){int id; string book;cin>>id>>book;//map.insert({id,book});mp[id]=book;}for(auto p:mp) cout<<p.first<<" "<<p.second<<endl;return 0;
}

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

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

相关文章

Nginx健康检查

Nginx健康检查nginx_upstream_check_module nginx健康检查介绍: ​ 主动健康检查&#xff0c;nignx定时主动地去ping后端的服务列表&#xff0c;当发现某服务出现异常时&#xff0c;把该服务从健康列表中移除&#xff0c;当发现某服务恢复时&#xff0c;又能够将该服务加回健…

Day106:代码审计-PHP原生开发篇文件安全上传监控功能定位关键搜索1day挖掘

目录 emlog-文件上传&文件删除 emlog-模板文件上传 emlog-插件文件上传 emlog-任意文件删除 通达OA-文件上传&文件包含 知识点&#xff1a; PHP审计-原生开发-文件上传&文件删除-Emlog PHP审计-原生开发-文件上传&文件包含-通达OA emlog-文件上传&文件…

【高项】信息化发展

目录 1.1 信息与信息化 1.1.1 信息 1.信息的定义 2.信息的特征与质量 1.1.2 信息系统 1.信息系统及其特性 2.信息系统生命周期 1.1.3 信息化 1.信息化内涵 2.信息化体系&#xff08;口诀&#xff1a;上应下技左人右规&#xff0c;中资网&#xff09; 1.2 现代化基础…

集装箱5G智能制造工厂数字孪生可视化平台,推进企业数字化转型

集装箱5G智能制造工厂数字孪生可视化平台&#xff0c;推进企业数字化转型。在当下数字化转型的热潮中&#xff0c;集装箱5G智能制造工厂数字孪生可视化平台成为了推动企业转型升级的重要工具。这一平台将先进的5G技术与智能制造相结合&#xff0c;通过数字孪生技术实现生产过程…

SpringMVC之静态资源访问

文章目录 SpringMVC之静态资源访问1. 后缀形式没有『静态资源访问』问题2. / 和 /* 会遇到『静态资源访问』问题3. 解决方案一4. 解决方案二 SpringMVC之静态资源访问 1. 后缀形式没有『静态资源访问』问题 如果你将 DispatcherServlet 的 url-pattern 配置成后缀形式&#x…

【JavaScript】浏览器与事件循环

浏览器的进程模型 主要包含&#xff1a;浏览器进程、网络进程、渲染进程&#xff1b; 一个进程就是一块内存空间&#xff1b; 进程&#xff1a;操作系统资源分配的基本单位&#xff0c;每一个进程都拥有独立的内存空间和系统资源&#xff0c;可以独立运行&#xff1b; 线程…

开课通知 | 5月六西格玛绿带培训火热招生

尊敬的各位学员&#xff1a; 天行健管理咨询将于近期开展六西格玛绿带公开课&#xff0c;旨在为广大企业和个人提供专业的六西格玛绿带培训&#xff0c;帮助大家掌握六西格玛绿带的核心知识和技能&#xff0c;提升工作效率和质量。现将相关事宜通知如下&#xff1a; 一、培训时…

工智能图像降噪软件 ON1 NoNoise AI 2024 for Mac激活版

ON1 NoNoise AI 2024 for Mac是一款专为Mac用户设计的先进人工智能图像降噪软件。其核心功能在于能够利用机器学习技术&#xff0c;快速并智能地消除图像中的噪点&#xff0c;无论是亮度噪点还是颜色噪点&#xff0c;都能得到显著的改善。 软件下载&#xff1a;ON1 NoNoise AI …

【AR】使用深度API实现虚实遮挡

遮挡效果 本段描述摘自 https://developers.google.cn/ar/develop/depth 遮挡是深度API的应用之一。 遮挡&#xff08;即准确渲染虚拟物体在现实物体后面&#xff09;对于沉浸式 AR 体验至关重要。 参考下图&#xff0c;假设场景中有一个Andy&#xff0c;用户可能需要放置在包含…

揭秘英特尔AI芯片如何做到比H100训练快40%、推理快50%

英特尔&#xff0c;开始正面硬刚英伟达了。 深夜时分&#xff0c;英特尔CEO帕特基辛格激动展示全新AI芯片Gaudi 3&#xff0c;引领未来科技潮流&#xff0c;开启智能新篇章。 他为什么开心到现场直接蹦迪&#xff1f; 看下Gaudi 3的性能结果&#xff0c;就一目了然了&#xf…

【回溯】Leetcode 78. 子集【中等】

子集 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[],[1],[2],[1,2…

算法打卡day32

今日任务&#xff1a; 1&#xff09;738.单调递增的数字 2&#xff09;968.监控二叉树 738.单调递增的数字 题目链接&#xff1a;738. 单调递增的数字 - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;贪…

(Java)数据结构——正则表达式

前言 本博客是博主用于复习数据结构以及算法的博客&#xff0c;如果疏忽出现错误&#xff0c;还望各位指正。 正则表达式概念 正则表达式&#xff0c;又称规则表达式&#xff08;Regular Expression&#xff09;&#xff0c;是一种文本模式&#xff0c;包括普通字符&#xf…

初学网络编程

网络编程是指编写能够在网络环境中运行&#xff0c;进行数据通信的程序的过程。它涵盖了从建立网络连接、发送和接收数据&#xff0c;到关闭连接等一系列操作。网络编程是开发网络应用程序的基础&#xff0c;它使得不同的计算机和设备能够通过网络进行数据交换和通信。 三个核…

微机消谐装置能够有效消除电网中的谐波干扰

随着电力技术的飞速发展&#xff0c;电网系统的稳定性与安全性成为了电力工业关注的重点。在这个背景下&#xff0c;微机消谐装置以其卓越的性能和广泛的应用领域&#xff0c;逐渐成为了电网系统中不可或缺的一部分。 微机消谐装置是一种基于微处理器技术的先进设备&#xff0c…

ELK企业级日志分析系统(elasticsearch+logstash+kibana)

目录 一.ELK概述 1.定义 &#xff08;1&#xff09;ElasticSearch &#xff08;2&#xff09;Kiabana &#xff08;3&#xff09;Logstash &#xff08;4&#xff09;Filebeat 2.filebeat结合logstash带来好处 3.为什么要是用ELK&#xff1f; 4.完整日志系统基本特征 …

无界面 centOS 中使用 DrissionPage

无界面 centOS 中使用 DrissionPage 1. centos 安装 chrome2. python 代码DrissionPage简介 某电影网站使用了加密js&#xff0c;无法直接从主页上爬取电影信息&#xff0c;只好借助 selenium 等工具。selenium 需要在服务器上安装浏览器和对应的 driver。我的服务器是无界面 c…

Docker学习笔记(一):入门篇,Docker概述、基本组成等,对Docker有一个初步的认识

前言 记录时间 [2024-4-5] 在先前的文章中&#xff0c;笔者进行了Windows系统下YOLOv8模型的简单测试&#xff0c;并由此引发思考&#xff1a;是否能尝试将此模型运行在Linux中呢&#xff1f;又或者&#xff0c;运行在Docker中。关于Docker的学习就这么展开了。 本文便是有关D…

RX8130CE为用户提供带复位延迟和主备电管理的解决方案

实时时钟作为设备的精确时钟来源&#xff0c;其作用如同人的心脏&#xff0c;为设备提供准确稳定的心跳.而便携式设备由于应用场景多变&#xff0c;所以对内部元器件要求也相对较高&#xff0c;这就对作为核心器件的实时时钟模块提出不少挑战。世强代理品牌EPSON实时钟模块产品…

Web3:下一代互联网的崛起与革命性展望

随着科技的飞速发展&#xff0c;互联网正在经历一场前所未有的变革。Web3&#xff0c;作为互联网的下一代&#xff0c;正以其独特的魅力和潜力&#xff0c;引领着这场革命性的浪潮。本文旨在深入探讨Web3的概念、特点以及对未来的展望&#xff0c;为读者呈现一个全面而深入的We…