三三文档
欢迎来到 三三文档,这里收录了 C++ 编程与算法竞赛(OI)相关的学习资料、代码模板和题解。本套文档遵循 33dai 基础语法大纲 的课程体系,从零基础到算法竞赛入门,循序渐进。
常用导航
语法基础
输入输出与变量
- 基础框架 — 万能头文件、
main 函数、using namespace std
- 输出语句 —
cout、换行、转义符、保留小数
- 输入语句 —
cin、getline
- 赋值与数学运算 — 赋值、运算符、语法糖
条件判断
- 选择语句 —
if/else、比较运算符、逻辑运算符、布尔
- 常见选择逻辑 — 闰年判断、三角形判断、上下取整
循环
一维数组
函数
数值类型与类型转换
- 变量与基础类型 —
int、long long、double、char、string、bool
- 整数编码 — 二进制、原码反码补码、数据范围
字符类型与字符转换
花式输入输出
二进制与位运算
字符串
- 字符串 —
string、substr、find、遍历
多维数组与结构体
简单递归
其他语法参考
能力提升
简单模拟
简单枚举
简单高精度
- 高精度 — 高+高、高-高、高×高、高×低、高÷低、高%低
简单数学
简单排序
- 排序算法 — 选择排序、冒泡排序、插入排序、计数排序、
sort() 函数
简单数据结构
动态数组
C++ 进阶语法
算法基础
线性优化技巧
- 前缀和与差分 — 一维前缀和、二维前缀和、简单差分
- 双指针 — 对撞指针、快慢指针、滑动窗口
- ST表 — 区间最值查询(RMQ)
二分查找与二分答案
离散化
简单数论
简单组合
字符串哈希
计算几何
搜索
深度优先搜索
广度优先搜索
简单图上搜索
图论
图论基础
- 图论基础 — 树/图的概念、邻接矩阵、邻接表、链式前向星
并查集与拓扑排序
- 并查集 — 路径压缩与启发式合并
- 拓扑排序 — Kahn 算法、DFS 实现
最小生成树
- 最小生成树 — Kruskal 算法、Prim 算法
最短路
- 最短路 — Floyd、Dijkstra、Bellman-Ford、SPFA
最近公共祖先
动态规划
线性 DP
- 基础 DP — 数字三角形、最长上升子序列(LIS)、最长公共子序列(LCS)
区间 DP
背包 DP
- 背包 DP — 01 背包、完全背包、多重背包、分组背包
树上 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 |
自己调用自己 |
简单递归、参数传引用
|
教学约定
详见 教学约定。