前言
近几年,蓝桥杯越来越为人所识,含金量也越来越高,但很多初学者不知道如何下手,因此博主总结以下步骤供参考。
一、语言基础
1.编程基础:
c、c++、python、java等(推荐优先学习c语言,c语言是基础,在学习其它语言时会发现许多的类似处,不推荐学习python,py是简便的语言,在学习py之后再学习c会发现c有些困难,从而形成懒惰性)。
2、编程语言学习的基本思路
优先看书,弄懂基础知识。再结合网课学习(大一新生若实在不想听线下的科就可以上网课,可以利用线下上课时间来学习,只要能学到知识就行,且网上找到的课程不一定比线下的课程差。)可以通过其它网站学习:菜鸟教程,csdn,力扣等。初学者可以多查看大佬的源代码,慢慢模拟思路,最后通过自己解决问题。
二、基础语法(算法基础)
1、时间复杂分析
2、枚举法
3、递归
4、排序:冒泡排序、选择排序、插入排序、快速排序、归并排序、
桶排序(算法提高)
5、进制转换
6、前缀和
7、差分
8、贪心
9、双指针
10、二分
11、倍增
12、构造
13、位运算
三、搜索
DFS:DFS基础、回溯、减纸、记忆化
四、动态规划
1、动态规划基础
线性dp、二维dp、LIS、LCS
2、背包问题
01背包、完全背包、多重背包、高级背包问题:二维费用背包/分组背包
单调对优化
3、树形dp
自上而下属性dp、至下而上树形dp、路径相关树形dp、换跟dp
4、区间dp
5、状压dp
6、数位dp
五、数学
(即使数学不好也是可以学编程语言的,不用过多担心)
1、线性代数与矩阵运算
矩阵基本运算(矩阵乘法),高斯消元,行列式
2、数论
整除/同于基本概念、GCD/LCM\朴素判定、埃氏筛法唯一分解定理、约数定理(个数、和)、快速幂、逆元/降幂基本该年与停用场景、费马小定理、欧拉函数、欧拉降幂
(算法提高)欧拉线性筛法、斐蜀定理与EXGCD
3、组合数学
技术原理、组合问题分类、选排列、原排列
(算法提高)错排列、组合数计算与组合恒等式、集合与朴素容斥
六、数据结构
1、基础数据
链表、栈、排列、堆、ST表、路径压缩
(算法提高)可撤销并查集
(算法进阶)带权并查集
2、基础的树上问题
数的基本概念、数的遍历、数的直径和中心、LCA
(算法提高)树上差分、DFS序、数链部分
3、数形数据结构:树状数组基础
二维树状数组
树状数组上二分、动态开点、标记永久化、线段树的信息合并、线段树维护矩阵乘法、线段树维护哈希、可持久化线段树、线段树与扫描线、01- Trie 、 Splay 、 FHQ - Treap (算法提高)
4、单数据结构
单调栈、单调队列
5、分块
整数划分分块、数论分块、 STL 的简单实现、普通莫队
七、图论
1、图的基础
图的基本概念、 DFS 、 BFS
2、拓扑排序
基础拓扑排序
3、最短路
Floyd 、 Dijkstra 、 johnson 最短路
4、生成树
Kruskal 、 Prim
八、计算几何
二维计算几何基础
基础(点的距离、圆的周长和面积等)
点积和叉积、点和线的关系、线和线的关系、任意多边形面积计算(算法提高)
总结
算法的学习应该贯彻到整个学习过程中,不能急于求成,应在刷题中不断总结,
每个算法都是在算题中不段总结,完整,最终熟悉。
此文章参考15届蓝桥杯杯赛公开课回放