蓝桥杯刷题总结 + 应赛技巧

news2025/5/17 11:24:40

当各位小伙伴们看到这篇文章的时候想必蓝桥杯也快开赛了,那么本篇文章博主就来总结一下一些蓝桥杯的应赛技巧,那么依旧先来走个流程

那么接下来我们分成几个板块进行总结

首先是一些基本语法

编程语言的基本语法

首先是数组,在存数据的时候,建议先从1开始存,为啥这么干呢,博主在刷题的过程中有几次因为下标从0开始存,导致最后在理解上出现了一些不必要的麻烦。这里我有必要说一下蓝桥杯第十五届回文数组这题,当时就是因为数据从0开始存导致在理解上绕了好大的弯才想明白。

其次是指针,对于大一的小伙伴们或许还是用当初那个模板——类型 *指针名,不用想这么复杂,直接用数组的下标代替即可,我们需要将指针作为一个思维而非死用模板。

最后是设置类型上,建议各位小伙伴直接使用long long 类型,这样可以避免出现一些数据因为类型范围小而溢出,从而出现一些麻烦

那么接下来就到了编程的技巧板块

填空题技巧

技巧一:巧用excel

参考例子:蓝桥真题讲解-CSDN博客

技巧二:巧用python

其实博主不太推荐技巧二,因为赛场上不一定有pycharm,看情况而定吧

编程技巧

取出一个整数中的某个位的数(个位,十位,百位,千位)

While(条件)
{
  tmp %= 10;

  Tmp /= 10;

}

这个不建议大家直接当成模板背,建议去理解,而且理解起来也很轻松,当然对于大一只想拿个省奖的同学还是可以考虑记一下的

将某些数存放进哈希表

for(int i = 0; i < n; i++)
{
   tmp = 数组名[i]
   hash[tmp] = tmp;
}

经过博主多次考虑决定将之前的模板改成了这个,毕竟是帮助大家,而不是给大家制造麻烦,当然也建议大家先去试试,有问题就在评论区留言,注意哈!这是c++才能用的哦,c语言用了,并且出问题,博主可不背锅哈!

哈希表统计数

举两个例子

非字母的统计

字母的统计

hash[数组名[i] - a]

已经掌握哈希的小伙伴,请忽略这两点

定义变量时的类型

定义变量时用的类型建议直接用long long 类型(即长整型),并且代码中所有变量的类型都保持一致,这样可以避免因超出范围而出现的bug的麻烦

二维数组的坑

二维数组不能开太大,并且vector<vector<int>>类型的也是一样不能开太大,怎么判断自己是否开太大了呢?博主是这么认为的,超过10000的就已经很大了,当然有不同看法的小伙伴欢迎评论区留言,我们可以相互交流一下

数组的创建与传参

一维数组的定义:类型    数组名[ 元素个数 ]     eg.int arr[10];(用这个也ok),最好放在main函数和其他函数的外面(也就是作为全局变量)

二维数组的定义:类型  数组名[ 行 ][  列 ] 

传参:

一维数组:

形参部分:类型 函数名(类型 数组名[数组大小])

实参部分: 函数名(数组名,其他参数)

二维数组:

形参部分:类型 函数名(类型数组名[行][列])其中行可以省略,列不可以省略

实参部分:  函数名(数组名,其他参数)

涉及排序

那么为了避免出现一些不必要的bug,我们可以直接使用sort容器对元素进行排序,那么以下是sort容器的使用模板

sort(数组名【起点位置】, 数组名 + 长度【终点位置】);

sort(数组名【起点位置】, 数组名 + 长度【终点位置】, 函数名);

第二个模板是需要我们自己再写一个函数,并且只要写如何排序即可

举个例子

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
struct node
{
	int x, y, z;
	int xw, yw, zw;
}a[N];
bool cmp1(node a, node b)
{
	return a.xw > b.xw;
}
bool cmp2(node a, node b)
{
	return a.yw > b.yw;
}
bool cmp3(node a, node b)
{
	return a.zw > b.zw;
}
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
	int n = 0;
	cin >> n;
	for(int i = 1; i <= n; i++) cin >> a[i].x;
	for(int i = 1; i <= n; i++) cin >> a[i].y;
	for(int i = 1; i <= n; i++) cin >> a[i].z;
	for(int i = 1; i <= n; i++)
	{
		a[i].xw = a[i].x - a[i].y - a[i].z;
		a[i].yw = a[i].y - a[i].x - a[i].z;
		a[i].zw = a[i].z - a[i].y - a[i].x;
	}
	long long xv = 0, yv = 0, zv = 0, x_ans = 0, y_ans = 0, z_ans = 0;
	sort(a + 1, a + 1 + n, cmp1);
	long long i = 1;
	xv += a[1].xw;
	while(i <= n && xv > 0)
	{
		i++;
		xv += a[i].xw;
		x_ans++;
	 } 
	sort(a + 1, a + 1 + n, cmp2);
     i = 1;
	yv += a[1].yw;
	while(i <= n && yv > 0)
	{
		i++;
		yv += a[i].yw;
		y_ans++;
	 } 
	sort(a + 1, a + 1 + n, cmp3);
     i = 1;
	zv += a[1].zw;
	while(i <= n && zv > 0)
	{
		i++;
		zv += a[i].zw;
		z_ans++;
	 } 
	 if(xv >= 0 && yv >= 0 && zv >= 0) cout << -1;
	 else cout << max(x_ans, max(y_ans, z_ans));
	return 0;
}

当然仅供参考 

选自蓝桥杯三国游戏

拓展:

如果使用了数据结构,如vector

那么上面的模板就得变成下面的

sort(对象名.begin(), 对象名.end());

sort(对象名.begin(), 对象名.end(), 函数名);

去重容器

定义:set<int,int> 对象名

使用案例(仅供参考)

#include<iostream>
#include<bits/stdc++.h>
#include<string>
using namespace std;
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	set<int> q;
	string s, s2;
	cin >> s;
    while(true)
    {
    	for(int i = 1; i < s.size() - 1; i++)
	    {
		    if(s[i] == s[i - 1] && s[i] != s[i + 1])
		    {
			   q.insert(i);
			   q.insert(i + 1);
		    }
		    if(s[i] == s[i + 1] && s[i] != s[i - 1])
		    {
			    q.insert(i);
			    q.insert(i - 1);
		    }
		}
		if(q.empty())
		{
			cout << s;
			break;
		}
		s2.clear();
		for(int i = 0; i < s.size(); i++)
		{
			if(q.find(i) == q.end()) s2 += s[i];
		}
		s = s2;
		q.clear();
		if(s.size() == 0)
		{
			cout << "EMPTY";
			break;
		}
	}
	return 0;
}

选自蓝桥杯消除游戏

数据交换

第一种交换方式

tmp = a;

a = b;

b = tmp;

第二种交换方式

a = a ^ b;

b = a ^ b;

a = a ^ b;

第三种交换方式

swap(a,b);

注意:swap是一个库函数,并且c++才能使用!!!

感觉有思路,但又不确定怎么写

这种情况,我们先不管那些细节问题,如变量声明,循环条件是什么,先写出一个大概,将大概的代码写完后再去补细节

几个经典bug

使用各语言对应的输出语句进行输出某个过程中的数据

案例1

因为少写了什么代码导致最后的结果与预期不同

就比如这题,预期答案是58,但是实际输出是2,那么如何找到这个问题呢

在sum += judge(……)这行代码的后面,编写输出语句,再次执行程序,我们可以发现它还是只输出了2

那么还是给大一的小伙伴说一个知识点:如果是正常的for 按理说是不会只输出一个sum的值(在无特殊情况下),为了让这个bug出现得更明显一点,我们还可以在small[x][y]那段代码后面加输出语句,如下图

那么就可以确定这里是有bug的,那么接下来回到我们一开始的代码原理图上

结合原理图和自己所编写的代码我们可以发现,两层for循环只走了了一次(这里是靠走读代码的技巧,怎么走读下面会讲)原因是少了'=',那么问题来了,为啥会出现二呢?因为下面还有个judge函数,并且我们传过去的参数有数组名和a,b两个变量,进入到judge函数后又会根据我们所写的执行,所以才会出现2

案例2

在本地能通过,在云端通不过

那么出现这种情况,我们可以优先考虑是否出现数组越界的问题,如上图就很明显,条件限制的是i,但对i + 1却没有限制导致出现一个越界,此外i从0开始,导致i - 1越界,因此使得本地能通过,而云端通不过。

案例3

如图所示,这个bug在devc++中表示命名冲突,解决方法:更改一下a和b这两个变量的名字即可

题型模板

动态规划

题型特征

背包问题,路径问题,打家劫舍问题

题型模板

状态表示

状态转移方程

初始化

填表顺序

返回值

前缀和

两个模板

模板一:将动态规划的模板走一遍(即预处理数组),使用数组

模板二:当前项 + 前一项

详情可以前往链接:蓝桥真题讲解-CSDN博客进行观看

差分

核心模板

数组名[l]++;

数组名[r + 1]--;

思路模板:出现差分的地方必有前缀和

 详情可以前往链接:蓝桥真题讲解-CSDN博客进行观看

以上模板优先看

其余模板

滑动窗口

题型特征

能用双指针,就可以考虑是否能用滑动窗口

题型模板

Left = 0, right = 0;

进窗口

判断

出窗口

👆  👇//表示循环

更新结果

二分查找

必记点

当然博主的水平有限,不过对于c组小伙伴们来说基本也就差不多了,如果博主的文章能对其他组的小伙伴有所帮助,博主也是倍感荣幸。

当然赛前这几天这篇文章也还会再更新点内容

最后祝大家旗开得胜!!!

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

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

相关文章

希哈表的学习

#include <stdio.h> #include <stdlib.h> #include "uthash.h"typedef struct {int id; // 学号&#xff0c;作为keychar name[20]; // 姓名&#xff0c;作为valueUT_hash_handle hh; // 必须有这个字段 } Student;Student* studen…

Qt之OpenGL使用Qt封装好的着色器和编译器

代码 #include "sunopengl.h"sunOpengl::sunOpengl(QWidget *parent) {}unsigned int VBO,VAO; float vertices[]{0.5f,0.5f,0.0f,0.5f,-0.5f,0.0f,-0.5f,-0.5f,0.0f,-0.5f,0.5f,0.0f };unsigned int indices[]{0,1,3,1,2,3, }; unsigned int EBO; sunOpengl::~sunO…

零基础开始学习鸿蒙开发-智能家居APP离线版介绍

目录 1.我的小屋 2.查找设备 3.个人主页 前言 好久不发博文了&#xff0c;最近都忙于面试&#xff0c;忙于找工作&#xff0c;这段时间终于找到工作了。我对鸿蒙开发的激情依然没有减退&#xff0c;前几天做了一个鸿蒙的APP&#xff0c;现在给大家分享一下&#xff01; 具体…

不再卡顿!如何根据使用需求挑选合适的电脑内存?

电脑运行内存多大合适&#xff1f;在选购或升级电脑时&#xff0c;除了关注处理器的速度、硬盘的容量之外&#xff0c;内存&#xff08;RAM&#xff09;的大小也是决定电脑性能的一个重要因素。但究竟电脑运行内存多大才合适呢&#xff1f;这篇文章将帮助你理解不同使用场景下适…

华为云 云化数据中心 CloudDC | 架构分析与应用场景

云化数据中心 CloudDC 云化数据中心 (CloudDC)是一种满足传统DC客户云化转型诉求的产品&#xff0c;支持将客户持有服务器设备部署至华为云机房&#xff0c;通过外溢华为云的基础设施管理、云化网络、裸机纳管、确定性运维等能力&#xff0c;帮助客户DC快速云化转型。 云化数据…

【射频仿真学习笔记】变压器参数的Mathematica计算以及ADS仿真建模

变压器模型理论分析 对于任意的无源电路或者等效电路&#xff0c;当画完原理图后&#xff0c;能否认为已经知道其中的两个节点&#xff1f;vin和vout之间的明确解析解 是否存在一个通用的算法&#xff0c;将这里的所有元素都变成了符号&#xff0c;使得这个算法本身就是一个函…

Linux系统Docker部署开源在线协作笔记Trilium Notes与远程访问详细教程

&#xfeff;今天和大家分享一款在 G 站获得了 26K的强大的开源在线协作笔记软件&#xff0c;Trilium Notes 的中文版如何在 Linux 环境使用 docker 本地部署&#xff0c;并结合 cpolar 内网穿透工具配置公网地址&#xff0c;轻松实现远程在线协作的详细教程。 Trilium Notes 是…

C++基础精讲-01

1C概述 1.1初识C 发展历程&#xff1a; C 由本贾尼・斯特劳斯特卢普在 20 世纪 70 年代开发&#xff0c;它在 C 语言的基础上增加了面向对象编程的特性&#xff0c;最初被称为 “C with Classes”&#xff0c;后来逐渐发展成为独立的 C 语言。 语言特点 &#xff08;1&#x…

为什么Java不支持多继承?如何实现多继承?

一、前言 Java不支持多继承&#xff08;一个类继承多个父类&#xff09;主要出于文中设计考虑&#xff1b;核心目的是简化语言复杂性并避免潜在的歧义性问题。 二、直接原因&#xff1a;菱形继承/钻石继承问题&#xff08;Diamond Problem&#xff09; 假设存在如下继承关系&…

[特殊字符] Spring Boot 日志系统入门博客大纲(适合初学者)

一、前言 &#x1f4cc; 为什么日志在项目中如此重要&#xff1f; 在开发和维护一个后端系统时&#xff0c;日志就像程序运行时的“黑匣子”&#xff0c;帮我们记录系统的各种行为和异常。一份良好的日志&#xff0c;不仅能帮助我们快速定位问题&#xff0c;还能在以下场景中…

Express中间件(Middleware)详解:从零开始掌握(1)

1. 中间件是什么&#xff1f; 想象中间件就像一个"加工流水线"&#xff0c;请求(Request)从进入服务器到返回响应(Response)的过程中&#xff0c;会经过一个个"工作站"进行处理。 简单定义&#xff1a;中间件是能够访问请求对象(req)、响应对象(res)和下…

现代工业测试的核心支柱:电机试验工作台?(北重机械厂家)

电机试验工作台是现代工业测试中的核心支柱之一。这种工作台通常用于对各种类型的电机进行性能测试、负载测试和耐久性测试。通过电机试验工作台&#xff0c;工程师可以评估电机的效率、功率输出、转速、扭矩、温度等关键参数&#xff0c;从而确保电机的设计符合要求&#xff0…

oracle 11g密码长度和复杂度查看与设置

verify_function_11G 的密码复杂性要求: 密码长度至少为 8 个字符。 密码必须包含至少一个数字和一个字母字符。 密码不能与用户名相同或相似。 密码不能是服务器名或其变体。 密码不能是常见的弱密码&#xff08;如 welcome1、oracle123 等&#xff09;。 注意事项&…

CVE-2025-32375 | Windows下复现 BentoML runner 服务器远程命令执行漏洞

目录 1. 漏洞描述2. 漏洞复现1. 安装 BentoML 1.4.72. 创建模型3. 构建模型4. 托管模型5. 执行exp 3. POC4. 补充学习 参考链接&#xff1a; https://mp.weixin.qq.com/s/IxLZr83RvYqfZ_eXhtNvgg https://github.com/bentoml/BentoML/security/advisories/GHSA-7v4r-c989-xh26 …

某局jsvmp算法分析(dunshan.js/lzkqow23819/lzkqow39189)

帮朋友看一个税某局的加密算法。 传送门 &#xff08;需要帐号登陆的 普通人没授权也看不了&#xff09; 废话不多说直接抓包开干 这里可以看到一个headers中的加密参数 lzkqow23819 以及url路径里面的6eMrZlPH(这个有点像瑞数里面的&#xff09; 还有就是cookies里面的这几个…

AlmaLinux9.5 修改为静态IP地址

查看当前需要修改的网卡名称 ip a进入网卡目录 cd /etc/NetworkManager/system-connections找到对应网卡配置文件进行修改 修改配置 主要修改ipv4部分&#xff0c;改成自己的IP配置 [ipv4] methodmanual address1192.168.252.129/24,192.168.252.254 dns8.8.8.8重启网卡 …

操作系统 4.4-从生磁盘到文件

文件介绍 操作系统中对磁盘使用的第三层抽象——文件。这一层抽象建立在盘块&#xff08;block&#xff09;和文件&#xff08;file&#xff09;之间&#xff0c;使得用户可以以更直观和易于理解的方式与磁盘交互&#xff0c;而无需直接处理磁盘的物理细节如扇区&#xff08;se…

免费多语言文档翻译软件推荐

软件介绍 今天给大家介绍一款文档翻译助手。它能够支持PDF、Word等多种文档格式&#xff0c;涵盖中文、英文、日语等多语言互译。此软件在翻译过程中精选保留文档原貌&#xff0c;每段文字、每个图表的匹配都十分完美&#xff0c;还依托顶尖翻译大模型&#xff0c;让翻译结果符…

安全序列(DP)

#include <bits/stdc.h> using namespace std; const int MOD1e97; const int N1e65; int f[N]; int main() {int n,k;cin>>n>>k;f[0]1;for(int i1;i<n;i){f[i]f[i-1]; // 不放桶&#xff1a;延续前一位的所有方案if(i-k-1>0){f[i](f[i]f[i-k…

【Flask开发】嘿马文学web完整flask项目第4篇:4.分类,4.分类【附代码文档】

教程总体简介&#xff1a;2. 目标 1.1产品与开发 1.2环境配置 1.3 运行方式 1.4目录说明 1.5数据库设计 2.用户认证 Json Web Token(JWT) 3.书架 4.1分类列表 5.搜索 5.3搜索-精准&高匹配&推荐 6.小说 6.4推荐-同类热门推荐 7.浏览记录 8.1配置-阅读偏好 8.配置 9.1项目…