三三文档首页
三三文档欢迎来到 三三文档,这里收录了 C++ 编程与算法竞赛(OI)相关的学习资料、代码模板和题解。 本套文档遵循 33dai 基础语法大纲 的课程体系,从零基础到算法竞赛入门,循序渐进。 |
快速导航
语法基础 · 能力提升 · 算法基础 |
语法基础
入门学习路线
输入输出 → 条件判断 → 循环
→ 数组 → 函数 → 数值类型
→ 字符 → 高级IO → 位运算
→ 字符串 → 结构体 → 递归
输入输出与变量
- 基础框架 — 万能头文件、
main函数、using namespace std - 输出语句 —
cout、换行、转义符、保留小数 - 输入语句 —
cin、getline - 赋值与数学运算 — 赋值、运算符、语法糖
条件判断
循环
一维数组
- 数组 — 一维数组、多维数组
函数
- 函数 — 定义、参数、返回值、传引用
数值类型与类型转换
字符类型与字符转换
- 字符 — ASCII、字符数字转换、大小写转换
花式输入输出
- 文件读写与高级IO —
freopen、IO 加速、读入到文件末尾
二进制与位运算
- 位运算与三目运算符 — 位运算、三目运算符
字符串
- 字符串 —
string、substr、find、遍历
多维数组与结构体
- 结构体 — 定义结构体、成员访问、结构体数组
简单递归
- 递归 — 递归思想、基础递归题目
其他语法参考
能力提升
专题训练
简单模拟 · 简单枚举
高精度 · 数学 · 排序
数据结构 · 动态数组
链表 · 重载运算符
简单模拟
- 简单模拟 — 经典模拟习题,日期计算、图形打印等
简单枚举
- 简单枚举 — 简单枚举与优化,百钱买百鸡等
简单高精度
- 高精度 — 高+高、高-高、高×高、高×低、高÷低、高%低
简单数学
- 质数判断与筛法 — 质数判断、埃氏筛、线性筛
- 最大公因数与最小公倍数 — 因数枚举、最大公因数
- 进制转换 — 任意进制互转
简单排序
- 排序算法 — 选择排序、冒泡排序、插入排序、计数排序、
sort()函数
简单数据结构
- queue 与 deque — 队列与双端队列
- stack — 栈
- 链表 — 链表的概念、数组模拟链表
动态数组
- vector — 动态数组基础使用
C++ 进阶语法
- map / unordered_map — 映射
- set / unordered_set — 集合
- priority_queue — 优先队列
- 重载运算符与迭代器 — 运算符重载、迭代器使用
- STL 实用例子 — 综合例题
算法基础
进阶算法
前缀和 · 差分 · 双指针
ST表 · 二分 · 离散化
快速幂 · 数论 · 组合
线性优化技巧
二分查找与二分答案
- 二分查找与二分答案 — lower_bound、二分答案
离散化
- 离散化 — 值域压缩
简单数论
简单组合
- 组合数与反演 — 排列数、组合数、杨辉三角、卡特兰数、反演
字符串哈希
计算几何
搜索
深度优先搜索
- 深度优先搜索(DFS) — 排列枚举、组合枚举、网格搜索
广度优先搜索
- 广度优先搜索(BFS) — 网格最短路、多源 BFS
简单图上搜索
- 简单图上搜索 — 图的遍历、连通分量、环检测
图论
图论体系
图论基础 → 搜索遍历
最小生成树 · 最短路
并查集 · 拓扑排序
最近公共祖先
图论基础
- 图论基础 — 树/图的概念、邻接矩阵、邻接表、链式前向星
并查集与拓扑排序
最小生成树
- 最小生成树 — Kruskal 算法、Prim 算法
最短路
- 最短路 — Floyd、Dijkstra、Bellman-Ford、SPFA
最近公共祖先
动态规划
线性 DP
- 基础 DP — 数字三角形、最长上升子序列(LIS)、最长公共子序列(LCS)
区间 DP
- 区间 DP — 石子合并、回文串问题
背包 DP
- 背包 DP — 01 背包、完全背包、多重背包、分组背包
树上 DP
- 树上 DP — 子树大小、树的直径、树的重心
数据结构
树状数组
- 树状数组 — 基础树状数组、维护权值数组、维护差分数组、二维树状数组
线段树
- 线段树 — 单点修改、区间加、区间和查询、区间最值查询
其他模板
33OJ 文档
课程大纲
本套文档遵循 33dai 基础语法大纲 的课程体系,分为 核心序列(Core) 和 扩展维度(Extend) 两部分:
| 课程编号 | 课程标题 | 课程内容 |
|---|---|---|
| C01-1 | 高级计算器 | 输入输出语句、int 变量
|
| C01-2 | 如果那么 | 不带 else 的 if 语句
|
| C01-3 | 在范围内吗 | 带 else 的 if 语句
|
| C01-4 | 一直做下去 | while 语句
|
| C01-5 | 想做几次做几次 | for 语句
|
| C01-6 | 循环套循环 | 循环嵌套 |
| C01-7 | 先存起来 | 一维数组 |
| C01-8 | 数组妙用 | 权值数组、无返回值无参数函数 |
| C01-9 | 功能打包 | 有参数有返回值函数 |
| E01-1 | int 存不下了 |
long long 类型、数据范围、整数编码
|
| E01-2 | 小数怎么办 | double 类型、类型转换
|
| E01-3 | 文字与符号 | char 类型、字符数字转换
|
| E01-4 | 花式输入输出 | 读入到文件末尾、保留 [math]\displaystyle{ x }[/math] 位小数 |
| E01-5 | 更多运算符 | 位运算、三目运算符 |
| E01-6 | 高级控制 | break、continue 与 exit(0)
|
| E01-7 | 一串字符 | 字符串 |
| E01-8 | 高维结构 | 多维数组与结构体 |
| E01-9 | 自己调用自己 | 简单递归、参数传引用 |
教学约定
详见 教学约定。
关于本文档
本套文档基于以下课程体系整理:
- 33dai 基础语法大纲 — 完整的课程大纲与教学体系
- 涵盖 C++ 基础语法、数据结构与算法、数学基础、OJ 工具等内容
- 面向零基础到算法竞赛入门的学习者