- sstzer 的博客
信竞指南
- @ 2024-6-13 17:52:17
从零基础到算法竞赛 —— 按顺序学,不跳步。
| 序号 | 专题 | 核心内容 | 链接 |
|---|---|---|---|
| 01 | 码力训练 | 键盘指法 · 盲打练习 · 编程环境搭建 | → 阅读 |
| 02 | 顺序结构 | 变量与常量 · 输入输出 · 表达式运算 | → 阅读 |
| 03 | 选择结构 | if-else 分支 · switch · 条件判断逻辑 | → 阅读 |
| 04 | 循环结构 | for / while / do-while · 循环嵌套 · 穷举 | → 阅读 |
| 05 | 数组 | 一维数组 · 二维数组 · 字符数组与字符串 | → 阅读 |
| 06 | 函数 | 函数定义与调用 · 参数传递 · 作用域 | → 阅读 |
| 07 | 排序 | 冒泡 · 选择 · 插入 · 桶排 · sort() | → 阅读 |
| 08 | 递归 | 递归思想 · 边界条件 · 斐波那契与汉诺塔 | → 阅读 |
| 09 | 分治 | 分而治之 · 归并排序 · 快速幂 | → 阅读 |
| 10 | 搜索 | DFS 深度优先 · BFS 宽度优先 · 回溯剪枝 | → 阅读 |
| 11 | 递推 | 数列递推 · 二维路径 · 状态递推 · 写表填表 | → 阅读 |
| 12 | 贪心 | 局部最优 · 区间调度 · 排序贪心策略 | → 阅读 |
| 13 | 动规 | 背包九讲 · 线性DP · 区间DP · 记忆化搜索 | → 阅读 |
🗺️ 学习路线
三阶段、十三个台阶,一步步登上信竞领奖台。
🖥️ 第一阶段:语言基础(01 — 06)
学会「写代码」—— 从打开编辑器到写出百行程序
| # | 专题 | 你将学会 | 难度 |
|---|---|---|---|
| 01 | 码力训练 | 键盘盲打 · 编程环境搭建 · 第一个 Hello World | ⭐ |
| 02 | 顺序结构 | 变量定义 · cin/cout 输入输出 · 算术表达式 |
|
| 03 | 选择结构 | if-else · switch · 关系与逻辑运算符 |
|
| 04 | 循环结构 | for / while / do-while · 循环嵌套 · 穷举思想 |
⭐⭐ |
| 05 | 数组 | 一维数组 · 二维数组 · char[] 与 string |
|
| 06 | 函数 | 定义与调用 · 形参与实参 · 变量作用域 · 模块化思维 |
🎯 阶段里程碑:独立完成百行以内的程序,输入输出、分支循环、数组函数自由组合。
🧠 第二阶段:基础算法(07 — 09)
学会「怎么算」—— 掌握三种最核心的算法思维方式
| # | 专题 | 你将学会 | 难度 | 前置 |
|---|---|---|---|---|
| 07 | 排序 | 冒泡 · 选择 · 插入 · 桶排序 · sort() 的使用 |
⭐⭐ | 04 05 |
| 08 | 递归 | 递归三要素 · 斐波那契 · 汉诺塔 · 执行过程可视化 | ⭐⭐⭐ | 06 |
| 09 | 分治 | 分而治之 · 归并排序 · 快速幂 · 二分查找 | 07 08 |
🎯 阶段里程碑:理解时间复杂度,能手写快排/归并,递归调用不出错。
🏆 第三阶段:竞赛算法(10 — 13)
学会「拿分」—— NOIP 普及组 / 提高组核心考点全覆盖
| # | 专题 | 你将学会 | 难度 | 前置 |
|---|---|---|---|---|
| 10 | 搜索 | DFS 深度优先 · BFS 宽度优先 · 回溯与剪枝 · 八皇后 | ⭐⭐⭐ | 08 |
| 11 | 递推 | 斐波那契 / Pell 数列 · 二维路径 · 昆虫繁殖 · 位数问题 | 04 05 | |
| 12 | 贪心 | 区间调度 · 排队接水 · 删数问题 · 活动选择 | 07 | |
| 13 | 动规 | 01背包 / 完全背包 · LIS / LCS · 区间DP · 记忆化搜索 | ⭐⭐⭐⭐ | 08 11 |
🎯 阶段里程碑:能独立阅读 CSP-J2 原题 → 分析出算法 → 写出 AC 代码。
| 阶段 | 学时参考 | 做题量 | 检验标准 |
|---|---|---|---|
| 🖥️ 语言基础 | 2~4 周 | 50+ 题 | 顺序/选择/循环/数组/函数自由组合使用 |
| 🧠 基础算法 | 2~3 周 | 30+ 题 | 能手写快排、归并,递归不出错 |
| 🏆 竞赛算法 | 4~8 周 | 100+ 题 | 洛谷普及组题目独立 AC |
💡 三个"不"原则:
① 不跳阶段 —— 语言基础不牢,直接学算法会崩溃;
② 不只看不写 —— 每学一个专题至少做 5 道题;
③ 不死记代码 —— 理解「为什么这么想」比「代码怎么写」重要十倍。
🎯 信竞的三种核心能力
| 能力 | 是什么 | 怎么练 |
|---|---|---|
| 码力 | 想到就能写出来,写出来就能过编译,过编译就能跑对 | 每学一个知识点至少刷 5 道题,量变引起质变 |
| 思维 | 看到题目能分析出:考什么算法?为什么用这个?边界在哪? | 做题时先想清楚再写代码,做完一题复盘一题 |
| 心理 | 赛场上脑子不空、手不抖,卡题不慌、能果断切换 | 定期参加模拟赛,限时训练,把紧张感练成习惯 |
💡 三者缺一不可。空有思维没码力,想到了写不出来;有码力没思维,只能做水题;前两者都有但心态崩了,赛场上照样拿不到分。
⛰️ 学习信竞的两大关(极其抽象)
第一关:递归(08)
递归难在「思维反转」—— 人习惯从前往后推,递归却要你相信一个还没写完的函数能给你正确答案。过了这关,你就真正拥有了「计算思维」,不再是一个只会堆代码的码农。分治、搜索、树形结构全都建立在递归之上。
🚪 过了递归,算法的大门才算真正打开。
第二关:动规(13)
动规难在「从无到有设计状态」—— 递推式不会自动跳出来,你得自己定义 dp 数组的含义、自己找转移方程。它没有固定模板,每道题都是一次创造。过了这关,你就从「学算法的人」变成了「能用算法解决问题的人」。
🏆 过了动规,CSP-J2一等奖向你招手。
码力训练 → ... → 递归(第一关)→ ... → 动规(第二关)→ 拿奖
01-06 08 13
视频教程
- [CCF官方教程]
- [一本通C++教程]