【蓝桥杯刷题】数据结构模块(持续更新)

前言

本刷题系列是我为了蓝桥杯前几天可以再系统性思考一下真题所做,所以部分内容会很简洁。如果能够帮助到你,我也会很开心!!

优先队列+双链表

2.整数删除 - 蓝桥云课 (lanqiao.cn)

题目截图

思路

1.因为他是要每次选择数列中最小的整数,所以可以想到优先队列,优先队列默认是大跟堆,最小的数要创建小跟堆

priority_queue<int, vector<int>, greater<int>>q;

2.要动态删除元素的话并且还要让删除的元素的两边都加上值可以先考虑双向链表,操作简单。

总结

1.要懂得巧用优先队列

priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;

有将两个数据弄成一个数据的时候可以考虑pair(比如说是想要把杂乱的数据排序,但是还想要原来的坐标就可以用pair)

make_pair()也可以生成我们想要的pair

### 关于第16届蓝桥杯编程及相关练习资源 #### 编程概述 蓝桥杯大赛作为一项面向全国大学生的高水平信息技术竞赛,其编程目通常分为填空和编程大两类。对于第16届蓝桥杯的具体目尚未完全公开的情况下,可以通过往年的真分析来推测可能涉及的知识点和技术难点。 以下是基于以往蓝桥杯的特点总结的一些常见考点及其解思路: --- #### **知识点覆盖** 1. **基础算法** - 排序算法(快速排序、归并排序等) - 查找算法(二分查找、哈希表应用等) 2. **数据结构** - 数组操作 - 字符串处理 - 栈与队列的应用场景 3. **动态规划** 动态规划问蓝桥杯中的高频考点之一,尤其适用于解决最优化问。例如背包问、最长公共子序列等问[^1]。 4. **模拟类问** 模拟类问往往需要仔细阅读目描述,并按照给定逻辑逐步实现程序功能。这类问虽然看似简单,但容易因边界条件考虑不周而失分。 5. **数学相关问** 如质数判断、最大公约数最小公倍数求法、组合计数等。这些基础知识在比赛中非常重要[^2]。 --- #### **具体解技巧** ##### 例解析:猜年龄问要求找到满足特定条件下的人的年龄范围。已知该人的年龄立方是一个四位数,四次方则为六位数,则可通过枚举法得出符合条件的结果: ```python for age in range(1, 100): # 设定合理区间 if 1000 <= age**3 < 10000 and 100000 <= age**4 < 1000000: print(age) ``` 上述代码通过双重约束筛选出了唯一解——即某一年龄值使得它的三次幂处于指定范围内同时四次幂也落入另一预设区间内。 ##### 另一类典型例子:“蛇形填数” 此类矩阵填充型目需注意方向控制以及越界检测机制的设计。下面给出一段Python版本解决方案示意如何完成类似任务: ```python def fill_snake(n): matrix = [[0]*n for _ in range(n)] num = 1 top, bottom, left, right = 0, n-1, 0, n-1 while True: # 向右移动 for i in range(left, right+1): matrix[top][i] = num; num +=1 top +=1 if top>bottom: break # 向下移动 for i in range(top,bottom+1): matrix[i][right]=num ;num+=1 right -=1 if left>right :break # 向左移动 for i in range(right,left-1,-1): matrix[bottom][i]=num;num+=1 bottom-=1 if top>bottom:break #向上移动 for i in range(bottom,top-1,-1): matrix[i][left]=num;num+=1 left+=1 if left>right:break return matrix result_matrix=fill_snake(5) for row in result_matrix: print(row) ``` 以上函数实现了在一个正方形网格上按顺时针螺旋顺序依次放置自然数的功能[^4]。 --- #### **推荐学习资源** 为了更好地准备第16届蓝桥杯赛事,可以参考以下几类优质资料: - 官方发布的历年试及官方解答文档。 - 社区分享的各种语言版经典例讲解视频。 - 在线评测平台上的专项模块,比如牛客网、洛谷等网站专门设立的蓝桥杯专区[^3]。 --- ####
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值