蓝桥杯简介
蓝桥杯竞赛主要分类两类,包括开发类和算法类。
其中开发类包括:web开发,嵌入式设计与开发,物联网设计与开发,单片机设计与开发。
本文主要介绍算法类
按照语言划分:
- java
- python
- c/c++
其中每种语言又分为研究生组、大学A组、大学B组、大学C组。
说明:
-
研究生只能报研究生组。
-
985、211本科生只能报大学A组及以上组别。
-
其它院校本科生可自行选择报大学B组及以上组别,高职高专和中职中专院校可报大学C组或其他任意组别。
如选手在报名时未遵照以上规则选择正确组别,一经发现将取消其参赛资格及成绩。
其中参赛 B 类的人数最多(B 类参赛资格是非985/211的本科或者专科),语言方面 C/C++ 参赛最多。
赛制
省赛和国赛。
省赛是每年三月末到四月初,国赛在五月末。
晋级国赛的资格是省赛取得省一等奖。
省赛成绩在自己语言组别省份中排名前 10% 便可以获得一等奖。(二等奖 20%,三等奖30%,也就是前 60% 就有奖)
备战
前提
掌握好语言的基础。
以C/C++为例:
-
基础的语法:变量,区块(blocks)、语句(statements)、预处理器(preprocessor)、内置数据类型(built-in data types)、数组(arrays)、指针(pointers)
-
STL。STL是个template程序库,包括容器(containers)、迭代器(iterators)、算法(algorithms)以及函数对象(function objects)
看书
为什么推荐看书,经典的算法书,可让你系统的构建体系
《【迷你书】挑战程序设计竞赛》
《算法竞赛入门经典》
《挑战程序设计竞赛(第2版)》
《数据结构》
-
其他oj
lettcode:https://leetcode.com/
南阳OJ:https://oj.fuquan.moe/
当然你也可以选择你自己喜欢的,这两个是我最喜欢用的。
浙江大学(ZJU):http://acm.zju.edu.cn/
北京大学(PKU):http://acm.pku.edu.cn/JudgeOnline/
同济大学(TJU):http://acm.tongji.edu.cn/
杭州电子科技大学(HDU):http://acm.hdu.edu.cn/
学习路线
大一上学期:
必学:
- C语言基础语法必须全部学会
需要掌握以下基本算法:
-
欧几里德算法求最大公约数
-
筛法求素数
-
康托展开
-
逆康托展开
-
同余定理
-
次方求模
-
计算几何初步
-
三角形面积
-
三点顺序
-
学会简单计算程序的时间复杂度与空间复杂度
-
二分查找法
-
简单的排序算法
-
冒泡排序法
-
插入排序法
-
贪心算法经典题目
大一下学期:
-
掌握C++部分语法,如引用类型,函数重载等,基本明白什么是类。
-
学会BFS与DFS
- 迷宫求解(最少步数)
- 水池数目(NYOJ27)
- 图像有用区域(NYOJ92)
-树的前序中序后序遍历
-
动态规划(15题以上),要学会使用循环的方法写动态规划,同时也要学会使用记忆化搜索的方法。
a) 最大子串和
b) 最长公共子序列
c) 最长单调递增子序列(O(n)与O(n log n)算法都需要掌握)
d) 01背包
e) RMQ算法
-
学会分析与计算复杂程序的时间复杂度
-
学会使用栈与队列等线性存储结构
-
学会分治策略
排序算法
归并排序
快速排序
计数排序
-
数论
a) 扩展欧几里德算法
b) 求逆元
c) 同余方程
d) 中国剩余定理
-
博弈论
a) 博弈问题与SG函数的定义
b) 多个博弈问题SG值的合并
-
图论:
a) 图的邻接矩阵与邻接表两种常见存储方式
b) 欧拉路的判定
c) 单最短路bellman-ford算法dijkstra算法。
d) 最小生成树的kruskal算法与prim算法。
大一假期(如果留校集训)
-
掌握C++语法,并熟练使用STL
-
试着实现STL的一些基本容器和函数,使自己基本能看懂STL源码
-
图论
a) 使用优先队列优化Dijkstra和Prim
b) 单源最短路径之SPFA
c) 差分约束系统
d) 多源多点最短路径之FloydWarshall算法
e) 求欧拉路(圈套圈算法)
-
进行复杂模拟题训练
-
拓扑排序
-
动态规划进阶
a) 完全背包、多重背包等各种背包问题(参见背包九讲)
b) POJ上完成一定数目的动态规划题目
c) 状态压缩动态规划
d) 树形动态规划
-
搜索
a) 回溯法熟练应用
b) 复杂的搜索题目练习
c) 双向广度优先搜索
d) 启发式搜索(包括A*算法,如八数码问题)
-
计算几何
a) 判断点是否在线段上
b) 判断线段相交
c) 判断矩形是否包含点
d) 判断圆与矩形关系
e) 判断点是否在多边形内
f) 判断点到线段的最近点
g) 计算两个圆的公切线
h) 求矩形的并的面积
i) 求多边形面积
j) 求多边形重心
k) 求凸包
大二一整年:
-
数据结构
a) 单调队列
b) 堆
c) 并查集
d) 树状数组
e) 哈希表
f) 线段树
g) 字典树
-
图论
a) 强连通分量
b) 双连通分量(求割点,桥)
c) 强连通分量与双连通分量缩点
d) LCA、LCA与RMQ的转化
e) 二分图匹配
i. 二分图最大匹配
ii. 最小点集覆盖
iii. 最小路径覆盖
iv. 二分图最优匹配
v. 二分图多重匹配
f) 网络流
i. 最大流的基本SAP
ii. 最大流的ISAP或者Dinic等高效算法(任一)
iii. 最小费用最大流
iv. 最大流最小割定理
-
动态规划多做题提高(10道难题以上)
-
数论
a) 积性函数的应用
b) 欧拉定理
c) 费马小定理
d) 威乐逊定理
-
组合数学
a) 群论基础
b) Polya定理与计数问题
c) Catalan数
-
计算几何
a) 各种旋转卡壳相关算法
b) 三维计算几何算法
感触
作为一个过来人,
-
组团刷题
一个人很难,但是一群人激励就很简单
-
从水题开始
一开始就刷难题,会打击自信心
-
想清楚为什么刷题
3.1 单纯兴趣
3.2 为了找工作,简历好看
3.3 学校的任务,
3.4 为了评奖