算法竞赛学习指南
由@LYS编辑此页面
小白篇
算法竞赛应该是入门门槛最低的计算机竞赛了——会 C 语言基础即可。
这个阶段出现的题目侧重 C 语言语法基础,并没有太多的难题,换句话说,只要你熟练掌握 C 语言,这个阶段的题目都不在话下。
新手入门的第一阶段,你只需要:
- 学习 C/C++ 语言语法基础
- 学习期间同步刷完线上评测系统 HAUE-OJ 前 100 题
- 参加每周的新生周赛,赛后看题解补题
这一阶段值得推荐的资料:
初学者-前篇
在你完成了小白篇该做的事情之后,你就可以开始入门算法竞赛了。 为了便于学习,我将这个阶段划分为两段。
这一阶段可以视作小白到入门算法的衔接阶段,在这一阶段会涉及到一些简单的思维和找规律的题目。
你需要在这一阶段:
- 学习 C++ 的基础语法和常用的 STL 库函数
- 学习期间同步刷完线上评测系统 HAUE-OJ 前 200 题
- 参加每周的新生周赛,赛后看题解补题
值得推荐的资料:
- 常用的 STL 笔记
初学者-后篇
这一阶段相较上一阶段难度提升幅度巨大,很多人也是在这一阶段开始放弃(
你需要在这一阶段:
- 学习算法竞赛常用的算法和数据结构,并对其进行专项练习。
- 学习期间开始尝试参加一些简单的算法竞赛,每次赛后补题目。
算法学习
对于基础算法,你要学习包括但不限于:
- 前缀和、差分
- 二分查找、二分答案
- 双指针、滑动窗口
- 高精度
必要的数据结构,包括但不限于:
- 链表
- 栈、队列
- 堆
- 哈希表
- 并查集
然后是稍微难一点的算法和数据结构:
- BFS、DFS
- 二叉树、树状数组
- 最短路、最小生成树、二分图
- 背包DP、线性DP
值得推荐的资料:
参加竞赛
在学习算法期间,你需要同步参加各大平台的算法竞赛,适应比赛节奏并坚持赛后补题进行提高。
算法竞赛平台:
- 力扣周赛:难度较低,时候新手和找工作选手参加
- 牛客竞赛:难度较高,且题目质量参差不齐
- AtCoder:推荐,Beginner 场适合新手参加,Regular 场题目质量较高
- Codeforces:推荐,新手适合参加 div4 和 div3,但更建议打 div2,cf 更侧重于思维题,题目质量上乘
⚠️ 这一阶段的竞赛的难度将会呈现 💥 增长,与此同时你也将接触到我们日后参加的绝大部分的算法竞赛:
- XCPC
- 蓝桥杯竞赛
- 团体程序设计天梯赛
提高者篇
🚧WARNING
本条目仍在积极施工中,可能存在遗漏或不完善的地方
进阶者篇
🚧WARNING
本条目仍在积极施工中,可能存在遗漏或不完善的地方