蓝桥杯竞赛经典题型模板

十进制转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/800411.shtml

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

相关文章

CentOS部署Apache Superset大数据可视化BI分析工具并实现无公网IP远程访问

文章目录 前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问3. 设置固定连接公网地址 前言 Superset是一款由中国知名科技公司开源的“现代化的…

react native 相机拍照

安装插件 npm install react-native-image-picker // 引入import { launchCamera, launchImageLibrary} from react-native-image-picker; 代码如下 <Button title"点击启动相机" onPress{() > takePhoto()}></Button> <Button title"点击启…

模具行业项目管理系统哪家好?模具项目管理系统找企智汇!

模具行业是一个对项目管理要求非常高的领域&#xff0c;涉及到复杂的制造流程、精细的工艺要求以及紧密的供应链协作。因此&#xff0c;选择一款适合模具行业的项目管理系统至关重要。 企智汇作为一款专注于企业数字一体化项目管理的软件&#xff0c;为模具行业提供了全面的项…

解决Xshell连接不上虚拟机

相信有很多同学和我一样遇到这个问题&#xff0c;在网上看了很多教程基本上都先让在虚拟机输入ifconfig命令查看ip地址&#xff0c;弄来弄去最后还是解决不了&#x1f62d;&#x1f62d;&#xff0c;其实问题根本就不在命令上&#xff0c;很大概率是我们的虚拟机没有开启网卡&a…

CSS实现热门创作者排行榜(毛玻璃效果)

CSS实现热门创作者排行榜&#xff08;毛玻璃效果&#xff09; 效果展示 CSS 知识点 CSS 基础知识回顾filter 属性运用回顾 整体页面布局实现 <div class"container"><h3>Popular Creator Rank List</h3><!-- 用户列表容器 --><div cl…

【剪映专业版】02软件快捷键

视频课程&#xff1a;有知公开课【剪映电脑版教程】 快捷键 苹果电脑选择Final Cut Pro X Windows电脑选择Premiere Pro 常用快捷键 更改快捷键

刷题之动态规划-子序列

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;开始刷动态规划的子序列类型相关的题目&#xff0c;子序列元素的相对位置和原序列的相对位置是一样的 动态规划5个步骤 状态表示 &#xff1a;dp数组中每一个下标对应值的含义是什么>dp[i]表示什么状态转移方程&#xf…

RuoYi-Cloud下载与运行

一、源码下载 若依官网:RuoYi 若依官方网站 鼠标放到"源码地址"上,点击"RuoYi-Cloud 微服务版"。 跳转至Gitee页面,点击"克隆/下载",复制HTTPS链接即可。 源码地址为:https://gitee.com/y_project/RuoYi-Cloud.git 点击复制 打开IDEA,选…

千万不要错过这6款能让你快速写作成长的宝藏软件…… #学习方法#AI写作

国外ChatGPT爆火&#xff0c;AI写作在国内也引起不小的瞩目&#xff0c;目前国内的AI写作工具少说也有几十上百个&#xff0c;要在这么多AI写作中找出适合自己的工具&#xff0c;一个一个尝试是不太现实的&#xff0c;所以今天就给大家推荐一些款AI写作工具。帮助你少走弯路&am…

开源AI程序员SWE-Agent的实现方法

1 引子 前几天&#xff0c;AI 编程机器人 Devin 引起了热议。传言称&#xff1a;程序员的饭碗就要丢了。这两天&#xff0c;一个类似功能的产品 SWE-Agent 开源&#xff0c;在 SWE-Bench 上实现了与 Devin 类似的效果。下面让我们来看看 AI 程序员的具体实现方法。 2 信息 地…

unicloud中文字段排序bug

db.collection(ledy-db).field( "序号,客户名称,期初余款,折扣,收款日期,收款金额,赠送金额,备注1,订单日期,订单金额,备注2,备注3,余款,老师).orderBy(客户名称).get()中文字段排序查不出数据 然后只能用使用原生云函数的sort方法来排序 云数据库聚合操作aggregate | u…

抖音电商罗盘品牌人群运营策略指南

【干货资料持续更新&#xff0c;以防走丢】 抖音电商罗盘品牌人群运营策略指南 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 抖音运营资料合集&#xff08;完整资料包含以下内容&#xff09; 目录 品牌人群运营策略&#xff0c;旨在帮助品牌通过精细化运营提…

深入理解MySQL中的utf8、utf8mb4和排序规则

在MySQL中,字符集和排序规则是两个非常重要的概念,它们决定了数据库如何存储和比较字符串数据。今天我们来探讨一下MySQL中几种常用的字符集和排序规则之间的区别和适用场景。 utf8和utf8mb4 utf8和utf8mb4都是MySQL中用于存储Unicode字符的字符集编码。但是它们有一个重要区…

sql 之 索引

索引是对数据库表中一列或多列的值进行排序的一种结构&#xff0c;使用索引可快速访问数据库表中的特定信息。 1. 什么是索引 官方上面说索引是帮助MySQL高效获取数据的数据结构&#xff0c;通俗点来说&#xff0c;数据库索引就像是是一本书的目录&#xff0c;可以直接根据页码…

深度学习笔记【订阅前必读】

一、同款pdf版本笔记使用情况 pytorch深度学习&#xff08;共计169页&#xff0c;基于本人听完B站小土堆PyTorch深度学习快速入门教程所写&#xff09; 发现这一份B站小土堆Pytorch深度学习笔记连985、211等高校同学都在使用(语雀在线版&#xff0c;笔记带评论) 二、笔记获取优…

vscode连接远程服务器一直需要输密码,但是连不上

问题&#xff1a;vscode连接远程服务器一直需要输密码&#xff0c;但是连不上。 解决办法&#xff1a;kill 掉该远程服务器&#xff0c;然后再重新连接 操作&#xff1a; windows: ctrlshiftp mac:cmdshiftp 调出指令&#xff0c;然后选择“Remote SSH:Kill Vscode Serve…

【代码随想录】day37:递增数字,监控二叉树

递增数字 def monotoneIncreasingDigits(self, n):""":type n: int:rtype: int"""# 找到不递增的位置i对应的数字k&#xff0c;前一个数字-1,后面都变为9&#xff0c;# 后序遍历nlist(str(n))for i in range(len(n)-1,0,-1):# 如果不递增if n[i]…

SpringMVC--概述 / 入门

目录 1. SpringMVC简介 2. 配置&入门 2.1. 开发环境 2.2. 创建maven工程 2.3. 手动创建 web.xml 2.4. 配置web.xml 2.4.1. 默认配置方式 2.4.2. 扩展配置方式 2.5. 创建请求控制器 2.6. 创建springMVC的配置文件 2.7. 测试 HelloWorld 2.7.1. 实现对首页的访问…

基于java+springboot+vue实现的教学辅助系统(文末源码+Lw)23-225

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&#…

如何在Linux中安装NVM(Node Version Manager)

NVM&#xff08;Node Version Manager&#xff09;是一个命令行工具&#xff0c;允许您轻松在同一台计算机上安装和管理多个版本的Node.js。它是Node.js开发者的神器&#xff0c;特别适用于需要在不同项目间切换Node.js版本的场景。下面是在Linux系统上安装NVM的详细步骤&#…